home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / PictureWipe.s < prev    next >
Text File  |  1994-06-27  |  63KB  |  2,744 lines

  1. ;PictureWipe
  2.  
  3.  
  4. rout            ;when this is off, the routine-file will be
  5.             ;assembled, on=testing
  6.             
  7. ;debug            ;when this is on, colors in the background will
  8.             ;show how much time the routine needs.
  9.  
  10. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  11.  
  12. aga
  13. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  14.  
  15. routinemode    equ    12    ;the routinemode !
  16.  
  17.  
  18. ; VideoTracker AGA developer source 25-12-93
  19. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  20. ; wich makes low-resolution overscan a bit ugly.
  21. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  22.  
  23. ; the first part of the source handles the things that are necessary to
  24. ; show the picture/copper and playing of the routine.
  25. ; the part between the "***" lines is the routine-source.
  26. ; at the bottom of the file, there are the necessary incbin-files who
  27. ; are needed to test the routine.
  28. ; these are saved with "save effect" in videotracker. they are raw
  29. ; data files which can be fonts,pictures,landscapes,vectorobjects
  30. ; etcetra
  31. ; the incbin-files are put in the "variables" table, in the routine
  32. ; player-handler
  33. ; the place where it's done can be found by searching for "!!!"
  34.  
  35.     opt    a+    ;devpac 3 optimize
  36.     opt    o+
  37.  
  38. vew_wid    equ    48
  39. vew_hgt    equ    290
  40. win_hgt    equ    117
  41. win_str    equ    $1a
  42.  
  43.         ifd    ocs
  44. pic_wid        equ    4        ;wide in bytes
  45. pic_hgt        equ    6        ;hoogte
  46. pic_dpt        equ    8        ;number planes
  47. pic_ani        equ    10        ;aantal effes (anim)
  48. pic_vew        equ    12        ;viewmode
  49. pic_cycstr    equ    14        ;cycle start (*4)
  50. pic_cycend    equ    15        ;cycle end (*4)
  51. pic_cycspd    equ    16        ;cycle speed (*4)
  52. pic_cycadd    equ    17        ;cycle add (*4)
  53. pic_palnum    equ    30        ;aantal kleuren
  54. pic_pal        equ    32        ;palette start
  55. pic_palsiz    equ    256*2        ;vaste palette size
  56. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  57.         endc
  58.         
  59.         ifnd    ocs
  60. pic_wid        equ    4        ;wide in bytes
  61. pic_hgt        equ    6        ;hoogte
  62. pic_dpt        equ    8        ;number planes
  63. pic_ani        equ    10        ;aantal effes (anim)
  64. pic_vew        equ    12        ;viewmode
  65. pic_cycstr    equ    14        ;cycle start (*8)
  66. pic_cycend    equ    15        ;cycle end (*8)
  67. pic_cycspd    equ    16        ;cycle speed (*8)
  68. pic_cycadd    equ    17        ;cycle add (*8)
  69. pic_widmod    equ    46        ;animation-width modulo
  70. pic_future    equ    50        ;free future space
  71. pic_palnum    equ    62        ;aantal kleuren
  72. pic_pal        equ    64        ;palette start
  73. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  74. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  75.         endc
  76.         
  77. var_len        equ    $300        ;lengte vartabel
  78.  
  79. var__GfxBase    equ    $000        ;graphics lib
  80. var_pic1    equ    $004        ;current picture
  81. var_anispd1    equ    $008        ;animspeed
  82. var_anitel1    equ    $00c        ;animcount
  83. var_cprbck    equ    $010        ;copperback
  84. var_bck        equ    $014        ;background
  85. var_pic2    equ    $018        ;current picture
  86. var_ntsc    equ    $01c        ;ntsc/pal frequence
  87. var_lnd        equ    $020        ;landscape
  88. var_anilop1    equ    $024
  89. var_rottrg    equ    $028        ;effect trigger
  90. var_txt1    equ    $040        ;text
  91. var_txt16    equ    15*4+var_txt1
  92. var_vec1    equ    $080        ;vectors
  93. var_vec16    equ    15*4+var_vec1
  94. var_fon1    equ    $0c0        ;fonts
  95. var_fon16    equ    15*4+var_fon1
  96. var_cols1    equ    $100        ;colorsets
  97. var_cols16    equ    15*4+var_cols1
  98. var_obj1    equ    $180        ;objects
  99. var_obj16    equ    15*4+var_obj1
  100.  
  101.     ifd    rout
  102.     ;videotracker routine-test
  103.  
  104.     incdir    "w:include/"
  105.     include    "exec/types.i"
  106.     include    "graphics/gfxbase.i"
  107.     include    "lvo/graphics_lib.i"
  108.     incdir    'videotracker:effect/'
  109.  
  110.     SECTION    1,CODE_C
  111. tus
  112.     lea    var,a0
  113.  
  114. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  115. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  116. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  117. ;    move.l    #rotsrc,curpic1        ;picture !!!
  118. ;    move.l    #rotsrc,curpal1        ;palette !!!
  119. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  120.  
  121.     bsr    paltabres
  122.  
  123.     move.l    ($4).w,a6
  124.     sub.l    a1,a1
  125.     jsr    -$126(a6)        ;findtask
  126.     move.l    d0,curtsk
  127.     move.l    d0,a0
  128.     move.l    $b8(a0),tskpri
  129.  
  130.     lea    dosnam,a1        ;doslib openen
  131.     moveq.l    #0,d0
  132.     move.l    (4).w,a6
  133.     jsr    -408(a6)        ;openlib
  134.     move.l    d0,doslib
  135.  
  136.     bsr.s    label5            ;videotracker opstarten
  137.     
  138.     move.l    curtsk,a0
  139.     move.l    tskpri,$b8(a0)
  140.     move.l    ($4).w,a6
  141.     jsr    -$84(a6)        ;forbid
  142.  
  143.     move.l    doslib,a1
  144.     move.l    (4).w,a6
  145.     jsr    -414(a6)        ;closelib
  146.  
  147.     moveq.l    #0,d0
  148.     rts
  149.     
  150. label5
  151.     move.l    (4).w,a6        ;workbench gedoe
  152.  
  153.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  154.  
  155.     ifd    ntsctest
  156.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  157.     endc
  158.  
  159.     cmp.b    #50,ntscmode        ;ntsc ?
  160.     beq.s    str.ntsc
  161.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  162. str.ntsc
  163.  
  164.     lea    cprjmp,a2        ;copjmp zetten !
  165.     move.l    #cprbck-8,d0
  166.     move.w    d0,6(a2)
  167.     swap    d0
  168.     move.w    d0,2(a2)
  169.  
  170.     lea    cprbck-8,a2        ;copstr zetten !
  171.     move.l    #cpr,d0
  172.     move.w    d0,6(a2)
  173.     swap    d0
  174.     move.w    d0,2(a2)
  175.  
  176.     bsr    cprsprrem        ;sprites legen
  177.  
  178.     lea    gfxnam,a1        ;graphics lib openen
  179.     move.l    (4).w,a6
  180.     jsr    -408(a6)        ;openlib
  181.     move.l    d0,a6
  182.     move.l    d0,gfxlib
  183.     move.l    38(a6),oldcprlist
  184.  
  185.     bset    #1,$bfe001
  186.     bsr    copbuf            ;copper vullen
  187.  
  188.     bsr    sysoff
  189.  
  190. gadrun
  191.     btst    #6,($bfe001).l
  192.     bne    gadrun
  193.  
  194. scrend
  195. scrend.play
  196.     bsr    syson
  197.  
  198.     move.l    gfxlib,a1
  199.     move.l    (4).w,a6
  200.     jsr    -414(a6)        ;closelib
  201.  
  202. scrend.qb
  203.     moveq.l    #0,d0    
  204.     rts
  205.     
  206.     ;vertical blank interrupt, no blits.
  207.     ;handles counters,interlace,sprite
  208.     ;level 3
  209.  
  210. intvb
  211.     bra.s    intvb.cnt
  212.     dc.l    'VIDU'
  213.     dc.l    'LOOP'
  214. intvb.cnt
  215.     movem.l    d0-d7/a0-a6,-(sp)
  216.     lea    ($dff000).l,a6
  217.  
  218.     move.w    $01e(a6),d0
  219.     btst    #5,d0            ;vblank ?
  220.     bne.s    intvb.vb
  221.  
  222.     bra.s    intcop.end
  223.  
  224. intvb.vb
  225.     bsr    grap
  226.     bsr    palctr            ;palette zetten
  227.     bsr.s    copbuf            ;copper vullen
  228.     
  229. intvb.end
  230.     move.w    #$0020,$09c(a6)        ;vb bit wissen
  231.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  232.     rte
  233.  
  234. intcop.end
  235.     movem.l    (sp)+,d0-d7/a0-a6
  236.     move.l    intvbold,-(sp)
  237.     rts
  238.  
  239.     ;transmission buffer empty routine, BLIT !
  240.     ;handles routines,animations
  241.     
  242. inttbe                    ;tbe interrupt
  243.     movem.l    d0-d7/a0-a6,-(sp)
  244.     lea    ($dff000).l,a6
  245.  
  246.     move.w    $01e(a6),d0
  247.     btst    #0,d0            ;no tbe ?
  248.     beq.s    intdskblk
  249.  
  250.  
  251.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  252.     beq.s    inttbe.cop
  253.     btst    #2,($dff016).l
  254.     beq.s    inttbe.cop
  255.  
  256.     ifd    debug
  257.     move.w    #$700,$dff180
  258.     endc
  259.     
  260.     bsr    rotply            ;routineplayer BLIT !
  261.     bsr.s    copbuf            ;copper vullen
  262.  
  263.     ifd    debug
  264.     move.w    #$070,$dff180
  265.     endc
  266.     
  267. inttbe.cop
  268.  
  269. inttbe.end
  270.     move.w    #$0001,$09c(a6)
  271.     movem.l    (sp)+,d0-d7/a0-a6
  272.     rte
  273.  
  274. intdskblk
  275.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  276.     movem.l    (sp)+,d0-d7/a0-a6
  277.     move.l    inttbeold,-(sp)
  278.     rts
  279.  
  280.  
  281.     ;moves the copperbuffer to the copperlist
  282.     ;sort of double buffering
  283.     
  284. copbuf
  285.     movem.l    d0-d7/a0-a6,-(sp)
  286.  
  287.     lea    ($dff000).l,a6
  288.  
  289. copbuf.novb                ;copperchange overslaan
  290.     moveq.l    #0,d0
  291.     move.b    $005(a6),d0
  292.     lsl.w    #8,d0
  293.     moveq.l    #0,d1
  294.     move.b    $006(a6),d1
  295.     add.w    d1,d0
  296.  
  297.     cmp.w    #$8,d0            ;lower limit, all stations 100%
  298.     blt    copbuf.novb
  299.  
  300.     cmp.b    #50,ntscmode
  301.     beq.s    copbuf.pal
  302.     cmp.w    #$133-72-$10,d0        ;ntsc grens
  303.     bge    copbuf.novb
  304.     bra.s    copbuf.cont
  305. copbuf.pal
  306.     cmp.w    #$133-$10,d0        ;pal grens
  307.     bge    copbuf.novb
  308. copbuf.cont
  309.  
  310.     lea    gra.s,a0        ;buffer copieren
  311.     lea    cprbuf,a1
  312. copbuf_aga                ;AGA stuff :)
  313.     move.l    #(gra.ql)/4-1,d0
  314. copbuf.a
  315.     move.w    2(a0),2(a1)
  316.     add.l    #4,a0
  317.     add.l    #4,a1
  318.     dbra    d0,copbuf.a
  319.  
  320. copbuf.end
  321.     movem.l    (sp)+,d0-d7/a0-a6
  322.     rts
  323.  
  324.     ;goes back to the workbench
  325.     
  326. syson
  327.     movem.l    d0-d7/a0-a6,-(sp)
  328.  
  329.     move.w    #$0001,$dff09a        ;tbeint uit
  330.     move.l    intvbold,($6c).w
  331.     move.l    inttbeold,($64).w
  332.  
  333.     move.l    4,a6
  334.     jsr    -138(a6)        ;permit
  335.  
  336.     move.l    gfxlib,a6
  337.     jsr    -462(a6)        ;disownblitter
  338.  
  339.     move.l    wbview,a1
  340.     move.l    gfxlib,a6
  341.     jsr    _LVOLoadView(a6)     ; Fix view
  342.     jsr    _LVOWaitTOF(a6)
  343.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  344.  
  345. syson.ras
  346.     cmp.b    #$c0,$dff006        ;prevent copperjump
  347.     bne    syson.ras
  348.  
  349.     move.l    gfxlib,a6
  350.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  351.  
  352.     movem.l    (sp)+,d0-d7/a0-a6
  353.     rts
  354.     
  355.     ;goes back to the gadgetscreen
  356.     
  357. sysoff
  358.     movem.l    d0-d7/a0-a6,-(sp)
  359.      
  360.     move.l    gfxlib,a6
  361.     move.l    gb_ActiView(a6),wbview    ;current view
  362.     sub.l    a1,a1            ; clear a1
  363.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  364.     jsr    _LVOWaitTOF(a6)     ; Wait once
  365.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  366.  
  367.     move.l    gfxlib,a6
  368.     jsr    -456(a6)        ;ownblitter
  369.  
  370.     move.l    4,a6
  371.     jsr    -132(a6)        ;forbid
  372.         
  373.     move.l    ($6c).w,intvbold
  374.     move.l    #intvb,($6c).w
  375.     move.l    ($64).w,inttbeold
  376.     move.l    #inttbe,($64).w
  377.     move.w    #$8001,$dff09a        ;tbeint aan
  378.     bsr    gracpr            ;reset copper
  379.     bsr    copbuf            ;copy copper
  380.     move.l    #cpr,$dff080
  381.  
  382.     movem.l    (sp)+,d0-d7/a0-a6
  383.     rts
  384.     
  385. cprsprrem
  386.     movem.l    d0-d7/a0-a6,-(sp)
  387.     lea    cprspr,a0
  388.     move.l    #sprdat,d0
  389.     move.w    #7,d1
  390. cprsprrem.a
  391.     move.w    d0,3*2(a0)
  392.     swap    d0
  393.     move.w    d0,1*2(a0)
  394.     swap    d0
  395.     add.l    #8,a0
  396.     dbra    d1,cprsprrem.a
  397.     movem.l    (sp)+,d0-d7/a0-a6
  398.     rts
  399.  
  400. varset                    ;variablen neerzetten
  401.     movem.l    d0-d7/a0-a6,-(sp)
  402.     move.l    #var,a0
  403.  
  404.     move.l    #cprbck,var_cprbck(a0)
  405.     move.l    gfxlib,var__GfxBase(a0)
  406.     move.b    ntscmode,var_ntsc(a0)
  407.  
  408.     move.l    curpic1,var_pic1(a0)    ;variabel
  409.     move.l    curpic2,var_pic2(a0)    ;variabel
  410.     move.w    anispd1,var_anispd1(a0)
  411.     move.w    anitel1,var_anitel1(a0)
  412.     move.b    anilop1,var_anilop1(a0)
  413.     move.l    #rottrg,var_rottrg(a0)
  414.     movem.l    (sp)+,d0-d7/a0-a6
  415.     rts
  416.     
  417.     ;this routine handles all videotracker-routines
  418.  
  419. rotply    
  420.     movem.l    d0-d7/a0-a6,-(sp)
  421.  
  422.     moveq.l    #0,d0
  423.  
  424.     lea    currot1,a2        ;routine 1
  425.     move.w    rotinf1,d0        ;routine info
  426.     bsr.s    rotplyr
  427.  
  428. rotply.end
  429.     movem.l    (sp)+,d0-d7/a0-a6
  430.     rts
  431.  
  432.     ;this routine handles 1 routine, BLIT !
  433.     
  434. rotplyr
  435.     movem.l    d0-d7/a1-a6,-(sp)
  436.  
  437.     move.l    #rot,(a2)        ;routinestart address
  438.  
  439. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  440.     clr.l    curpic2            ;background picture
  441.     move.w    #1,anispd1        ;animationspeed
  442.     clr.w    anitel1            ;animation position
  443.  
  444.     lea    var,a0            ;communication-table
  445.     move.l    #rotincpic,curpic1    ;incbinfile !!!
  446.     clr.l    curpic2            ;background picture
  447.     move.w    #1,anispd1        ;animationspeed
  448.     clr.w    anitel1            ;animation position
  449.     move.b    #0,anilop1        ;animloop off/on !!!
  450.     move.l    #routinemode,d0        ;routinemode !!!
  451.  
  452.     sub.l    a0,a0            ;picture info legen
  453.  
  454.     tst.l    (a2)            ;is er een routine ?
  455.     beq    rotplyr.end        ;interlace handling
  456.  
  457.     move.l    intdel,d2        ;delay
  458.     move.l    inttel,d1        ;teller
  459.     cmp.w    d2,d1
  460.     blt    rotplyr.end
  461.     clr.l    inttel
  462.                 
  463.     bsr    varset            ;variabelen updaten
  464.  
  465.     move.l    (a2),a1            ;routine halen
  466.     move.l    #var,a0            ;variablen tabel
  467.  
  468.     movem.l    d3-d7/a1-a6,-(sp)
  469.     moveq.l    #0,d1            ;vars wissen
  470.     moveq.l    #0,d2
  471.     moveq.l    #0,d3
  472.     moveq.l    #0,d4
  473.     moveq.l    #0,d5
  474.     moveq.l    #0,d6
  475.     moveq.l    #0,d7
  476.     sub.l    a2,a2
  477.     sub.l    a3,a3
  478.     sub.l    a4,a4
  479.     sub.l    a5,a5
  480.  
  481.     jsr    4(a1)            ;routine afwerken
  482.     movem.l    (sp)+,d3-d7/a1-a6
  483.  
  484.     ;Routine:
  485.     ;
  486.     ;Input:
  487.     ;a0=variabelentabel
  488.     ;d0=routinemode
  489.     ;
  490.     ;Output:
  491.     ;a0=picture
  492.     ;d1=copperlist
  493.     ;d2=interruptdelay        (NOT used till now)
  494.     
  495.     move.w    #$0020,$dff09a        ;vb off !
  496.  
  497.     move.l    d2,intdel        ;delay
  498.  
  499.     lea    cprjmp,a3
  500.     move.l    #cprbck-8,d0
  501.  
  502.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  503.     bne.s    rotplyr.nocop
  504.     tst.l    d1            ;copperlist ?
  505.     beq.s    rotplyr.nocop
  506.     move.l    d1,d0
  507. rotplyr.nocop
  508.     move.w    d0,6(a3)
  509.     swap    d0
  510.     move.w    d0,2(a3)
  511.  
  512.     cmp.l    #0,a0            ;picture ?
  513.     beq.s    rotplyr.endvb
  514.  
  515.     move.l    a0,curpic1        ;current picture (cycle)
  516.     move.l    a0,curpal1        ;current palette
  517.  
  518.     tst.b    rotdpl            ;plane is geleverd
  519.     beq.s    rotplyr.set
  520.     clr.b    rotdpl
  521.     clr.l    cycdel1            ;cycle info wissen
  522.     clr.l    4+cycdel1
  523.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  524. rotplyr.set
  525.     clr.b    dplctr
  526.     bsr.s    grap
  527.     bsr    grac            ;colorset
  528. rotplyr.endvb
  529.     move.w    #$8020,$dff09a
  530. rotplyr.end
  531.     movem.l    (sp)+,d0-d7/a1-a6
  532.     rts
  533.  
  534.     ;removes possible routine-coppers
  535.     
  536. gracpr
  537.     movem.l    d0-d7/a0-a6,-(sp)
  538.     lea    cprjmp,a3
  539.     move.l    #cprbck-8,d0        ;copperlist resetten
  540.     move.w    d0,6(a3)
  541.     swap    d0
  542.     move.w    d0,2(a3)
  543.     movem.l    (sp)+,d0-d7/a0-a6
  544.     rts
  545.  
  546. grap                    ;d7=anim
  547.     movem.l    d0-d7/a0-a6,-(sp)
  548.  
  549.     clr.l    d7
  550.  
  551.     tst.l    curpic1            ;current picture ?
  552.     beq    grap.end
  553.  
  554.     move.l    curpic1,a2        ;normal pic halen
  555.  
  556.     lea    gracprscr,a1        ;window neerzetten
  557.     move.l    hogscr,d1
  558.  
  559.     move.w    pic_hgt(a2),d3        ;pic hoogte
  560.     move.w    pic_vew(a2),d5
  561.     btst    #2,d5            ;interlace ?
  562.     beq.s    grap.nohi4
  563.     lsr.w    #1,d3            ;/2
  564. grap.nohi4
  565.     cmp.w    d3,d1
  566.     bge.s    grap.hog
  567.     move.w    d1,d3
  568. grap.hog
  569.     sub.w    d3,d1
  570.     lsr.w    #1,d1
  571.     add.w    #win_str,d1
  572.     move.w    d1,d2
  573.     add.w    d3,d2
  574.  
  575.     move.b    d1,2(a1)        ;y start
  576.     move.b    d2,6(a1)        ;y end
  577.  
  578.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  579.     lsl.l    #3,d4
  580.  
  581.     move.l    #vew_wid*8,d0
  582.     move.l    #0,d1
  583.     move.l    #$61,d6
  584.  
  585.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  586.     ble.s    grap.noov1
  587.     move.l    #$41,d6
  588. grap.noov1
  589.  
  590.     move.w    pic_vew(a2),d5
  591.     btst    #15,d5            ;hires ?
  592.     beq.s    grap.nohi2
  593.  
  594.     move.l    #(vew_wid)*8*2,d0
  595.     move.l    #1,d1
  596.     move.l    #$61,d6
  597.  
  598.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  599.     ble.s    grap.nohi2
  600.     move.l    #(vew_wid)*8*2,d0
  601.     move.l    #$51,d6
  602.  
  603.     bra.s    grap.noshi2
  604. grap.nohi2    
  605.     btst    #6,d5            ;super hires ?
  606.     beq.s    grap.noshi2
  607.  
  608.     move.l    #(vew_wid)*8*4,d0
  609.     move.l    #2,d1
  610.     move.l    #$61,d6
  611.  
  612.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  613.     ble.s    grap.noshi2
  614.     move.l    #(vew_wid)*8*4,d0
  615.     move.l    #$51,d6
  616.  
  617. grap.noshi2    
  618.  
  619.     clr.w    d5
  620.     cmp.w    d0,d4            ;breeder dan scherm ?
  621.     ble.s    grap.c
  622.     move.w    d4,d5
  623.     move.w    d0,d4
  624.     sub.w    d0,d5            ;modulo
  625.     lsr.w    #3,d5            ;/8
  626. grap.c
  627.     lsr.w    d1,d0
  628.     lsr.w    d1,d4
  629.  
  630.     move.w    d0,d2
  631.     sub.w    d4,d2
  632.     lsr.w    #1,d2            ;/2
  633.  
  634.     add.w    d6,d2
  635.     move.b    d2,3(a1)        ;x start
  636.     move.w    d2,d3            ;d3 bewaren !
  637.  
  638.     add.w    d4,d2            ;d4 bewaren !
  639.     move.b    d2,7(a1)        ;x end
  640.     
  641.     move.w    pic_vew(a2),d6
  642.     btst    #15,d6            ;hires ?
  643.     beq.s    grap.nohi5    
  644.     add.l    d4,d4            ;*2
  645.     bra.s    grap.noshi5
  646. grap.nohi5
  647.     btst    #6,d6            ;super hires ?
  648.     beq.s    grap.noshi5    
  649.     add.l    d4,d4            ;*4
  650.     add.l    d4,d4
  651. grap.noshi5
  652.  
  653.     move.l    d7,-(sp)
  654.     move.w    pic_vew(a2),d6
  655.     move.l    #17,d0
  656.     move.l    #4,d1            ;ecs 1
  657.     move.l    #3,d7
  658.  
  659.     btst    #15,d6            ;hires ?
  660.     beq.s    grap.nohi3    
  661.     move.l    #17,d0            ;ecs 9
  662.     move.l    #4,d1            ;ecs 2
  663.     move.l    #2,d7
  664.     bra.s    grap.noshi3
  665. grap.nohi3
  666.     btst    #6,d6            ;super hires ?
  667.     beq.s    grap.noshi3    
  668.     move.l    #17,d0            ;ecs 9
  669.     move.l    #4,d1            ;ecs 2
  670.     move.l    #1,d7
  671. grap.noshi3
  672.     sub.w    d0,d3
  673.     lsr.w    #1,d3
  674.     move.w    d3,10(a1)        ;ddfstrt
  675.     
  676.     move.w    d4,d2            ;pic breedte in pixels
  677.     lsr.w    #4,d2            ;/16
  678.     sub.w    d1,d2            ;-1
  679.  
  680.     lsl.w    d7,d2            ;*8
  681.     add.w    d2,d3
  682.     move.w    d3,14(a1)        ;ddfstop
  683.     move.l    (sp)+,d7
  684.     
  685.     lea    pic_raw(a2),a0
  686.  
  687.     moveq.l    #0,d2
  688.     move.w    pic_dpt(a2),d2
  689.     sub.l    #1,d2
  690.     muls    pic_wid(a2),d2
  691.     add.w    d2,d5
  692.  
  693.     move.w    pic_vew(a2),d2        ;viewmode add
  694.     btst    #2,d2
  695.     beq.s    grap.nolace4
  696.  
  697.     moveq.l    #0,d2
  698.     move.w    pic_dpt(a2),d2
  699.     muls    pic_wid(a2),d2
  700.     add.w    d2,d5            ;interlace gedoe
  701. grap.nolace4
  702.  
  703.     lea    gracprbpl,a4        ;iffpln neerzetten
  704.     lea    gracprpln,a0        ;iffpln neerzetten
  705.     moveq.l    #0,d2
  706.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  707.     move.l    #8,d6            ;copper step !
  708.  
  709.     tst.l    curpic2            ;2de picture ?
  710.     bne.s    grap.pic2
  711. grap.nopic2
  712.     move.w    d5,34(a1)        ;modulo oneven zetten
  713.     bra    grap.nodpl
  714. grap.pic2
  715.     move.l    curpic2,a3        ;oneven plane
  716.     move.l    curpic2+4,a6        ;oneven plane
  717.     move.l    currot2,a5        ;oneven plane
  718.     clr.l    curpic2            ;mischien niet goed
  719.     clr.l    curpic2+4        ;mischien niet goed
  720.     clr.l    curpal2            ;mischien niet goed
  721.     clr.l    currot2            ;mischien niet goed
  722.  
  723.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  724.     beq.s    grap.nopic2
  725.     
  726.     cmp.l    #0,currot1        ;routine ?    
  727.     beq.s    grap.norot
  728.     cmp.l    currot1,a5        ;routine hetzelfde ?
  729.     beq.s    grap.nopic2
  730. grap.norot
  731.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  732.     bgt    grap.nopic2
  733.  
  734.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  735.     cmp.b    d2,d3            ;gelijke plnummers ?
  736.     bne.s    grap.nopic2
  737.     move.w    pic_vew(a2),d1
  738.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  739.     bne.s    grap.nopic2
  740.  
  741.     move.w    pic_vew(a2),d1        ;groter dan view test
  742.     btst    #6,d1            ;super hires ?
  743.     beq.s    grap.nohi2a
  744.     move.l    #vew_wid*4,d1
  745.     bra.s    grap.nohi2b
  746. grap.nohi2a
  747.     btst    #15,d1            ;hires ?
  748.     beq.s    grap.noshi2a
  749.     move.l    #vew_wid*2,d1
  750.     bra.s    grap.nohi2b
  751. grap.noshi2a
  752.     move.l    #vew_wid,d1
  753. grap.nohi2b
  754.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  755.     bgt.s    grap.small
  756.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  757.     bgt.s    grap.small
  758.  
  759.     move.w    pic_vew(a2),d1
  760.     btst    #2,d1
  761.     beq.s    grap.nolace8a
  762.     move.l    hogscr,d1
  763.     add.l    d1,d1
  764.     bra.s    grap.nolace8b
  765. grap.nolace8a
  766.     move.l    hogscr,d1
  767. grap.nolace8b
  768.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  769.     bgt.s    grap.small
  770.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  771.     bgt.s    grap.small
  772.     bra.s    grap.big
  773.  
  774. grap.small
  775.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  776.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  777.     bne    grap.nopic2
  778.     move.w    pic_wid(a2),d1
  779.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  780.     bne    grap.nopic2
  781.  
  782. grap.big
  783.     move.l    a3,curpic2        ;toch wel goed !
  784.     move.l    a6,curpic2+4
  785.     move.l    a3,curpal2
  786.     move.l    a5,currot2
  787.  
  788.     tst.b    dplctr            ;dual playfield al gezet ?
  789.     beq    grap.nocop
  790.  
  791.     move.w    30(a1),34(a1)        ;modulo copieren
  792.  
  793.     move.w    2(a4),d1        ;bplcon0
  794.     btst    #10,d1            ;al dual playfield ?
  795.     beq.s    grap.ta
  796.  
  797.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  798.     move.w    6(a0),14(a0)
  799.  
  800.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  801.     move.w    22(a0),30(a0)
  802.  
  803.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  804.     move.w    38(a0),46(a0)
  805.  
  806.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  807.     move.w    54(a0),62(a0)
  808.  
  809.     bra.s    grap.tb
  810. grap.ta
  811.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  812.     move.w    28(a0),62(a0)
  813.  
  814.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  815.     move.w    22(a0),46(a0)
  816.  
  817.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  818.     move.w    14(a0),30(a0)
  819.  
  820.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  821.     move.w    6(a0),14(a0)
  822.  
  823. grap.tb
  824.     move.l    #palette,a3        ;palette copieren
  825.  
  826.     move.w    #16-1,d1
  827. grap.pal
  828.     move.l    (a3)+,60(a3)
  829.     dbra    d1,grap.pal
  830.  
  831. grap.nocop
  832.     add.w    d3,d2            ;aantal bitplanes
  833.     cmp.w    #8,d2            ;8 bitplanes ?
  834.     blt    grap.no8planes2
  835.     move.w    #%10000,d2        ;only bit 4
  836.     bra    grap.8planes2
  837. grap.no8planes2
  838.     lsl.w    #8,d2
  839.     lsl.w    #4,d2
  840. grap.8planes2
  841.     or.w    #$400,d2        ;dual playfield aan
  842.     move.w    d2,2(a4)        ;bplcon0
  843.  
  844.     movem.l    d0-d7/a0-a6,-(sp)
  845.  
  846.     move.l    curpic,a2        ;animpic ?
  847.     move.l    curfrm,d7
  848.     cmp.l    #0,a2
  849.     bne.s    grap.noanipic
  850.  
  851.     move.l    curpic2,a2        ;normal pic ?
  852.     move.l    curfrm2,d7
  853.     cmp.l    #0,a2
  854.     beq.s    grap.nodplpic
  855.  
  856. grap.noanipic
  857.     add.l    d6,a0
  858.     add.w    d6,d6
  859.     bsr.s    grappln            ;a2,d6,d7,d0
  860. grap.nodplpic
  861.     movem.l    (sp)+,d0-d7/a0-a6
  862.     add.w    d6,d6
  863.     bra.s    grap.nodpla
  864.  
  865.  
  866. grap.nodpl                ;geen dual playfield
  867.     cmp.w    #8,d2            ;8 bitplanes ?
  868.     blt    grap.no8planes
  869.     move.w    #%10000,d2        ;only bit 4
  870.     bra    grap.8planes
  871. grap.no8planes
  872.     lsl.w    #8,d2
  873.     lsl.w    #4,d2
  874. grap.8planes
  875.     move.w    d2,2(a4)        ;bplcon0
  876.  
  877. grap.nodpla
  878.     move.w    d5,30(a1)        ;modulo even
  879.  
  880.     moveq.l    #0,d3
  881.     add.w    pic_vew(a2),d3        ;viewmode add
  882.     moveq.l    #0,d2
  883.     move.w    2(a4),d2
  884.     or.l    d3,d2
  885.  
  886.     ifd    gui
  887.     tst.b    genlck
  888.     bne    grap.genset
  889.     endc
  890.  
  891.     or.l    #$100,d2        ;genlock off ($302)
  892.  
  893.     ifd    gui
  894.     bra    grap.gencont
  895. grap.genset
  896.     or.l    #$102,d2        ;genlock on ($302)
  897. grap.gencont
  898.     endc
  899.     
  900.     move.w    d2,2(a4)
  901.     
  902.     bsr.s    grappln            ;a2,d6,d7,d0
  903.  
  904. grap.end
  905.     
  906.     movem.l    (sp)+,d0-d7/a0-a6
  907.     rts
  908.         
  909.  
  910.     ;sets on of the 2 possible pictures to the copper
  911.     ;handles interlace
  912.  
  913.     ;d7=framenummer
  914.     ;d6=copperliststap
  915.     ;d0=raw planes positie
  916.     ;a2=current picture
  917. grappln                    ;planes invullen 
  918.     movem.l    d0-d7/a0-a6,-(sp)
  919.  
  920.     lea    pic_raw(a2),a1
  921.     move.l    a1,d0            ;raw planes
  922.     
  923.     moveq.l    #0,d2            ;x*y
  924.     move.w    pic_wid(a2),d2
  925.     lsr.l    #1,d2            ;/2
  926.     moveq.l    #0,d3
  927.     move.w    pic_hgt(a2),d3
  928.     muls    d3,d2
  929.     
  930.     move.l    d2,d4
  931.     add.l    d2,d2
  932.  
  933.     move.w    pic_dpt(a2),d3
  934.     muls    d3,d4            ;hele picture size
  935.     muls    d7,d4            ;frame*size d7 !!!
  936.  
  937.     add.l    d4,d4
  938.  
  939.     add.l    d4,d0
  940.  
  941.     move.l    #vew_wid,d5        ;max x view
  942.     move.l    hogscr,d4        ;max y view
  943.     move.w    pic_vew(a2),d1        ;viewmode add
  944.     btst    #2,d1
  945.     beq.s    grappln.nolace
  946.     add.l    d4,d4            ;max y view
  947. grappln.nolace
  948.     btst    #15,d1            ;hires ?
  949.     beq.s    grappln.nohi
  950.     move.l    #vew_wid*2,d5        ;max x view
  951.     bra.s    grappln.noshi
  952. grappln.nohi
  953.     btst    #6,d1            ;super hires ?
  954.     beq.s    grappln.noshi
  955.     move.l    #vew_wid*4,d5        ;max x view
  956. grappln.noshi
  957.  
  958.     moveq.l    #0,d3            ;scherm centreren
  959.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  960.     cmp.w    d5,d3            ;breder dan scherm ?
  961.     ble.s    grappln.qa
  962.     sub.w    d5,d3            ;-scherm breedte
  963.     lsr.w    #2,d3            ;/4
  964.  
  965.     add.l    d3,d3
  966.  
  967.     add.l    d3,d0
  968. grappln.qa
  969.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  970.     cmp.w    d4,d3            ;hoger dan scherm ?
  971.     ble.s    grappln.qb
  972.     sub.w    d4,d3            ;-scherm breedte
  973.     lsr.w    #1,d3            ;/2
  974.     moveq.l    #0,d5
  975.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  976.     muls    pic_dpt(a2),d5
  977.     muls    d5,d3
  978.     add.l    d3,d0
  979. grappln.qb
  980.     moveq.l    #0,d2
  981.     move.w    pic_wid(a2),d2
  982.  
  983.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  984.     btst    #2,d5
  985.     beq.s    grappln.nolac7b
  986.  
  987.     move.w    $04(a6),d5        ;even/oneven ?
  988.     btst    #15,d5
  989.     beq.s    grappln.nolac7b
  990.     
  991.     moveq.l    #0,d3
  992.     move.w    pic_wid(a2),d3
  993.     muls    pic_dpt(a2),d3
  994.     add.l    d3,d0
  995. grappln.nolac7b
  996.  
  997.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  998.     tst.w    d1            ;0 planes ?
  999.     beq    grappln.end
  1000.     sub.w    #1,d1
  1001. grappln.a
  1002.     move.w    d0,3*2(a0)
  1003.     swap    d0
  1004.     move.w    d0,1*2(a0)
  1005.     swap    d0
  1006.     add.l    d6,a0            ;d6=copper step !
  1007.     add.l    d2,d0
  1008.     dbra    d1,grappln.a
  1009.  
  1010.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1011.     bne    grappln.noham8
  1012.     btst    #3,pic_vew(a2)        ;ham ?
  1013.     beq    grappln.noham8
  1014.  
  1015.     move.w    -14(a0),d0        ;get 6
  1016.     move.w    -10(a0),d1
  1017.     move.w    -6(a0),d2        ;get 7
  1018.     move.w    -2(a0),d3
  1019.     move.w    -18(a0),-2(a0)        ;5>7
  1020.     move.w    -22(a0),-6(a0)        ;5>7
  1021.     move.w    -26(a0),-10(a0)        ;4>6
  1022.     move.w    -30(a0),-14(a0)        ;4>6
  1023.     move.w    -34(a0),-18(a0)        ;3>5
  1024.     move.w    -38(a0),-22(a0)        ;3>5
  1025.     move.w    -42(a0),-26(a0)        ;2>4
  1026.     move.w    -46(a0),-30(a0)        ;2>4
  1027.     move.w    -50(a0),-34(a0)        ;1>3
  1028.     move.w    -54(a0),-38(a0)        ;1>3
  1029.     move.w    -58(a0),-42(a0)        ;0>2
  1030.     move.w    -62(a0),-46(a0)        ;0>2
  1031.     move.w    d0,-62(a0)        ;6>0
  1032.     move.w    d1,-58(a0)        ;6>0
  1033.     move.w    d2,-54(a0)        ;7>1
  1034.     move.w    d3,-50(a0)        ;7>1
  1035. grappln.noham8
  1036.  
  1037. grappln.end
  1038.     movem.l    (sp)+,d0-d7/a0-a6
  1039.     rts
  1040.  
  1041.     ;sets palettes to palette-buffer
  1042.     
  1043. grac
  1044.     movem.l    d0-d7/a0-a6,-(sp)
  1045.  
  1046.     lea    curpal1,a3        ;palette 1
  1047.     move.l    #palette,a1
  1048.     bsr.s    gracfrm
  1049.  
  1050.     lea    curpal2,a3        ;palette 2 (dpl)
  1051.     move.l    #16*4+palette,a1
  1052.     bsr.s    gracfrm
  1053.     
  1054.     bsr    palctr            ;palette-buffer to copper
  1055. grac.end
  1056.     movem.l    (sp)+,d0-d7/a0-a6
  1057.     rts
  1058.         
  1059.     ;moves palette from picture to palette-buffer
  1060.  
  1061. gracfrm
  1062.     movem.l    d0-d7/a0-a6,-(sp)
  1063.     tst.l    (a3)            ;palette aanwezig ?
  1064.     beq.s    gracfrm.end
  1065.  
  1066.     move.l    (a3),a2            ;current palette
  1067.     
  1068.     cmp.l    #'PALE',(a2)        ;palette ?
  1069.     bne.s    gracfrm.pict
  1070.     lea    6(a2),a0        ;palette
  1071.     move.w    4(a2),d0        ;aantal kleuren
  1072.     bra.s    gracfrm.col
  1073. gracfrm.pict
  1074.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1075.     bne.s    gracfrm.noanim
  1076.  
  1077.     moveq.l    #0,d1
  1078.     move.w    pic_ani(a2),d1
  1079.     bclr    #7,d1            ;behandelbit weghalen
  1080.  
  1081.     moveq.l    #0,d3
  1082.     move.w    pic_wid(a2),d3
  1083.     lsr.w    #1,d3            ;/2
  1084.     muls    pic_hgt(a2),d3
  1085.     muls    pic_dpt(a2),d3
  1086.  
  1087.     add.l    d3,d3
  1088.  
  1089.     add.l    #pic_raw,d3
  1090.     move.l    d3,d5
  1091.  
  1092.     btst    #0,d1
  1093.     bne.s    gracfrm.buf2
  1094.     moveq.l    #0,d5
  1095. gracfrm.buf2
  1096.     add.l    d5,a2
  1097. gracfrm.noanim
  1098.     lea    pic_pal(a2),a0        ;palette
  1099.     move.w    pic_palnum(a2),d0
  1100.  
  1101.     tst.w    d0            ;0 planes ?
  1102.     beq.s    gracfrm.end
  1103. gracfrm.col
  1104. gracfrm.fa
  1105.     move.l    (a0)+,(a1)+
  1106.     dbra    d0,gracfrm.fa
  1107. gracfrm.end
  1108.     movem.l    (sp)+,d0-d7/a0-a6
  1109.     rts
  1110.     
  1111.     ;handles colorcycling in the palette-buffer
  1112.  
  1113. palcycctr
  1114.     movem.l    d0-d7/a0-a6,-(sp)
  1115.  
  1116.     move.l    curpic1,a2        ;current raw
  1117.     cmp.l    #0,a2
  1118.     beq.s    palcycctr.qb
  1119.     lea    cycdel1,a3        ;cycle delays
  1120.     move.l    #paltab,a4
  1121.     bsr    palcyc
  1122. palcycctr.qb
  1123.     move.l    curpic2,a2        ;current raw
  1124.     cmp.l    #0,a2
  1125.     beq.s    palcycctr.c
  1126.     lea    cycdel2,a3        ;cycle delays
  1127.     move.l    #16*2+paltab,a4
  1128.     bsr    palcyc
  1129. palcycctr.c
  1130.     movem.l    (sp)+,d0-d7/a0-a6
  1131.     rts
  1132.     
  1133.     ;copies palette-buffer to copper
  1134.  
  1135. palctr
  1136.     movem.l    d0-d7/a0-a6,-(sp)
  1137.  
  1138.     lea    gracprcol,a1        ;AGA
  1139.     move.l    #palette,a0
  1140.     move.l    #paltab,a2
  1141.     move.w    #8-1,d6
  1142. palctr.e
  1143.     move.w    #32-1,d7
  1144. palctr.d
  1145.     move.w    (a2)+,d0            ;get cycle-position
  1146.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1147.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1148.     add.l    #4,a1
  1149.     dbra    d7,palctr.d
  1150.     add.l    #((32+2)*4),a1
  1151.     dbra    d6,palctr.e
  1152. palctr.end
  1153.     movem.l    (sp)+,d0-d7/a0-a6
  1154.     rts
  1155.  
  1156.     ;reset palette tabel, for proper color cycling
  1157.  
  1158. paltabres
  1159.     movem.l    d0-d7/a0-a6,-(sp)
  1160.     ifd    aga
  1161.     lea    256*2+paltab,a0
  1162.     move.w    #16,a1
  1163.     move.l    #$03c003c4,d0
  1164.     move.l    #$03c803cc,d1
  1165.     move.l    #$03d003d4,d2
  1166.     move.l    #$03d803dc,d3
  1167.     move.l    #$03e003e4,d4
  1168.     move.l    #$03e803ec,d5
  1169.     move.l    #$03f003f4,d6
  1170.     move.l    #$03f803fc,d7
  1171.     endc
  1172.     ifd    ocs
  1173.     lea    32*2+paltab,a0
  1174.     move.w    #2,a1
  1175.     move.l    #$00200022,d0
  1176.     move.l    #$00240026,d1
  1177.     move.l    #$0028002a,d2
  1178.     move.l    #$002c002e,d3
  1179.     move.l    #$00300032,d4
  1180.     move.l    #$00340036,d5
  1181.     move.l    #$0038003a,d6
  1182.     move.l    #$003c003e,d7
  1183.     endc
  1184. paltabres.a
  1185.     movem.l    d0-d7,-(a0)
  1186.     ifd    aga
  1187.     sub.l    #$00400040,d0
  1188.     sub.l    #$00400040,d1
  1189.     sub.l    #$00400040,d2
  1190.     sub.l    #$00400040,d3
  1191.     sub.l    #$00400040,d4
  1192.     sub.l    #$00400040,d5
  1193.     sub.l    #$00400040,d6
  1194.     sub.l    #$00400040,d7
  1195.     endc
  1196.     ifd    ocs
  1197.     sub.l    #$00200020,d0
  1198.     sub.l    #$00200020,d1
  1199.     sub.l    #$00200020,d2
  1200.     sub.l    #$00200020,d3
  1201.     sub.l    #$00200020,d4
  1202.     sub.l    #$00200020,d5
  1203.     sub.l    #$00200020,d6
  1204.     sub.l    #$00200020,d7
  1205.     endc
  1206.     sub.w    #1,a1
  1207.     cmp.w    #0,a1
  1208.     bne    paltabres.a
  1209. paltabres.end
  1210.     movem.l    (sp)+,d0-d7/a0-a6
  1211.     rts
  1212.  
  1213.     ;colorcyclinghandling of a palette
  1214.  
  1215. palcyc
  1216.     movem.l    d0-d7/a0-a6,-(sp)
  1217.     move.w    #4-1,d7            ;4 cycles
  1218. palcyc.d
  1219.     tst.w    (a3)+            ;delay klaar ?
  1220.     bne.s    palcyc.c
  1221.     
  1222.     moveq.l    #0,d1
  1223.     move.b    pic_cycstr(a2),d1    ;start color
  1224.     lsl.b    #1,d1        ;*2
  1225.  
  1226.     moveq.l    #0,d2
  1227.     move.b    pic_cycend(a2),d2    ;end color
  1228.     lsl.b    #1,d2        ;*2
  1229.  
  1230.     moveq.l    #0,d3
  1231.     move.b    pic_cycadd(a2),d3    ;richting
  1232.  
  1233.     move.l    a4,a0            ;palette pointer
  1234.     move.l    a0,a1
  1235.     add.l    d1,a0            ;startcolor
  1236.     add.l    d2,a1            ;endcolor
  1237.     
  1238.     cmp.b    #1,d3            ;omhoog
  1239.     beq.s    palcyc.up    
  1240.     cmp.b    #3,d3            ;omlaag
  1241.     beq.s    palcyc.down
  1242.     bra.s    palcyc.i
  1243.  
  1244. palcyc.up                ;kleuren copieren
  1245.     move.w    (a1),d4            ;laatst color bewaren
  1246. palcyc.f                ;kleuren copieren
  1247.     cmp.l    a0,a1
  1248.     beq.s    palcyc.fa
  1249.     move.w    -(a1),2(a1)
  1250.     bra.s    palcyc.f
  1251. palcyc.fa
  1252.     move.w    d4,(a1)
  1253.     bra.s    palcyc.g    
  1254.     
  1255. palcyc.down
  1256.     move.w    (a0),d4            ;laatst color bewaren
  1257. palcyc.h                ;kleuren copieren
  1258.     cmp.l    a0,a1
  1259.     beq.s    palcyc.ha
  1260.     move.w    2(a0),(a0)+
  1261.     bra.s    palcyc.h
  1262. palcyc.ha
  1263.     move.w    d4,(a1)
  1264.  
  1265. palcyc.g
  1266.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1267.     bra.s    palcyc.i
  1268. palcyc.c
  1269.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1270. palcyc.i
  1271.     add.l    #4,a2            ;next cycle info
  1272.     dbra    d7,palcyc.d
  1273.  
  1274. palcyc.qb
  1275.     movem.l    (sp)+,d0-d7/a0-a6
  1276.     rts
  1277.  
  1278.  
  1279.  
  1280. ;    SECTION    variabelen,DATA_c
  1281.  
  1282.     cnop    0,2
  1283. curtsk        dc.l    0
  1284. tskpri        dc.l    0
  1285. duplok        dc.l    0
  1286. inttel        dc.l    0
  1287. intdel        dc.l    0
  1288.  
  1289. form        dc.l    0
  1290. ifffil        dc.l    0
  1291. intvbold    dc.l    0
  1292. inttbeold    dc.l    0
  1293. patpos        dc.l    0
  1294. gfxlib        dc.l    0
  1295. doslib        dc.l    0
  1296. wbview      dc.l    0
  1297. mt_data        dc.l    0
  1298. memvid        dc.l    0
  1299. oldcprlist    dc.l    0
  1300. hogscr        dc.l    vew_hgt
  1301.  
  1302. inspos        dc.l    -1
  1303. anispd1        dc.w    1    ;nooit op 0 !
  1304. anispd2        dc.w    1
  1305.  
  1306.         cnop    0,2
  1307. varclr.s            ;start wissen
  1308. oldrot        dc.l    0
  1309. curpic        dc.l    0
  1310. curfrm        dc.l    0
  1311. cycdel1        ds.w    4
  1312. cycdel2        ds.w    4
  1313.  
  1314. rotinf1        dc.w    0
  1315. rotinf2        dc.w    0
  1316.  
  1317. effspd        dc.w    0
  1318. efflop        dc.b    0
  1319. anilop1        dc.b    0
  1320. anilop2        dc.b    0
  1321. anipal1        dc.b    0
  1322. anipal2        dc.b    0
  1323. rotdpl        dc.b    1
  1324. rottrg        dc.b    1
  1325. dplctr        dc.b    0
  1326.         cnop    0,2
  1327.  
  1328. insdat        ds.l    4
  1329. inspri        dc.l    0
  1330. instel        dc.w    0
  1331.  
  1332. cureff        dc.l    0
  1333. efftel        dc.w    0
  1334.  
  1335. curpal1        dc.l    0
  1336. curpal2        dc.l    0
  1337. currot1        dc.l    0
  1338. currot2        dc.l    0
  1339. curpic1        dc.l    0
  1340. curpic2        dc.l    0
  1341. anitel1        dc.w    0
  1342. anitel2        dc.w    0
  1343. curfrm1        dc.l    0
  1344. curfrm2        dc.l    0
  1345. oldfrm1        dc.l    0
  1346. oldfrm2        dc.l    0
  1347.  
  1348. varclr.e
  1349.         dc.l    0            ;wisruimte
  1350.     
  1351. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1352.     
  1353. ntscmode    dc.b    0
  1354. end        dc.b    0
  1355.  
  1356. pronam    dc.b    'VideoTracker',0
  1357.     cnop    0,2
  1358. dosnam    dc.b    'dos.library',0
  1359.     cnop    0,4
  1360. gfxnam    dc.b    'graphics.library',0
  1361.     cnop    0,4
  1362.     
  1363.     cnop    0,4
  1364. gra.s            ;copperlist edit buffer
  1365. gracprscr
  1366.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1367. gracprbpl
  1368.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1369.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1370. gracprpln
  1371.     dc.w    $e0,$0000,$e2,$0000    ;1
  1372.     dc.w    $e4,$0000,$e6,$0000    ;2
  1373.     dc.w    $e8,$0000,$ea,$0000    ;3
  1374.     dc.w    $ec,$0000,$ee,$0000    ;4
  1375.     dc.w    $f0,$0000,$f2,$0000    ;5
  1376.     dc.w    $f4,$0000,$f6,$0000    ;6
  1377.     dc.w    $f8,$0000,$fa,$0000    ;7
  1378.     dc.w    $fc,$0000,$fe,$0000    ;8
  1379. gracprcol
  1380.     dc.w    $106,$0000
  1381.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1382.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1383.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1384.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1385.     dc.w    $106,$0200
  1386.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1387.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1388.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1389.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1390.  
  1391.     dc.w    $106,$2000
  1392.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1393.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1394.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1395.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1396.     dc.w    $106,$2200
  1397.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1398.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1399.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1400.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1401.  
  1402.     dc.w    $106,$4000
  1403.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1404.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1405.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1406.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1407.     dc.w    $106,$4200
  1408.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1409.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1410.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1411.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1412.  
  1413.     dc.w    $106,$6000
  1414.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1415.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1416.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1417.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1418.     dc.w    $106,$6200
  1419.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1420.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1421.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1422.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1423.  
  1424.     dc.w    $106,$8000
  1425.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1426.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1427.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1428.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1429.     dc.w    $106,$8200
  1430.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1431.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1432.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1433.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1434.  
  1435.     dc.w    $106,$a000
  1436.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1437.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1438.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1439.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1440.     dc.w    $106,$a200
  1441.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1442.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1443.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1444.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1445.  
  1446.     dc.w    $106,$c000
  1447.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1448.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1449.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1450.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1451.     dc.w    $106,$c200
  1452.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1453.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1454.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1455.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1456.  
  1457.     dc.w    $106,$e000
  1458.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1459.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1460.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1461.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1462.     dc.w    $106,$e200
  1463.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1464.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1465.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1466.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1467.  
  1468.     dc.w    $106,$1000
  1469.  
  1470. cprjmp
  1471.     dc.w    $080,0,$082,0
  1472. gra.e
  1473. gra.ql    equ    gra.e-gra.s        ;block lengte
  1474.  
  1475. cpr                    ;real copperlist
  1476.     dc.w    $0001,$fffe
  1477.     dc.w    $09c,$8001        ;tbeint
  1478. cprspr
  1479.     dc.w    $120,$0000,$122,$0000
  1480.     dc.w    $124,$0000,$126,$0000
  1481.     dc.w    $128,$0000,$12a,$0000
  1482.     dc.w    $12c,$0000,$12e,$0000
  1483.     dc.w    $130,$0000,$132,$0000
  1484.     dc.w    $134,$0000,$136,$0000
  1485.     dc.w    $138,$0000,$13a,$0000
  1486.     dc.w    $13c,$0000,$13e,$0000
  1487.  
  1488. cprbuf
  1489.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1490.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1491.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1492.  
  1493.     dc.w    $e0,$0000,$e2,$0000    ;0
  1494.     dc.w    $e4,$0000,$e6,$0000    ;1
  1495.     dc.w    $e8,$0000,$ea,$0000    ;2
  1496.     dc.w    $ec,$0000,$ee,$0000    ;3
  1497.     dc.w    $f0,$0000,$f2,$0000    ;4
  1498.     dc.w    $f4,$0000,$f6,$0000    ;5
  1499.     dc.w    $f8,$0000,$fa,$0000    ;6
  1500.     dc.w    $fc,$0000,$fe,$0000    ;7
  1501.  
  1502.     dc.w    $106,$0000
  1503.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1504.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1505.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1506.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1507.     dc.w    $106,$0200
  1508.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1509.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1510.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1511.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1512.  
  1513.     dc.w    $106,$2000
  1514.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1515.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1516.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1517.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1518.     dc.w    $106,$2200
  1519.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1520.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1521.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1522.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1523.  
  1524.     dc.w    $106,$4000
  1525.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1526.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1527.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1528.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1529.     dc.w    $106,$4200
  1530.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1531.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1532.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1533.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1534.  
  1535.     dc.w    $106,$6000
  1536.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1537.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1538.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1539.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1540.     dc.w    $106,$6200
  1541.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1542.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1543.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1544.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1545.  
  1546.     dc.w    $106,$8000
  1547.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1548.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1549.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1550.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1551.     dc.w    $106,$8200
  1552.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1553.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1554.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1555.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1556.  
  1557.     dc.w    $106,$a000
  1558.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1559.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1560.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1561.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1562.     dc.w    $106,$a200
  1563.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1564.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1565.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1566.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1567.  
  1568.     dc.w    $106,$c000
  1569.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1570.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1571.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1572.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1573.     dc.w    $106,$c200
  1574.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1575.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1576.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1577.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1578.  
  1579.     dc.w    $106,$e000
  1580.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1581.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1582.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1583.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1584.     dc.w    $106,$e200
  1585.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1586.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1587.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1588.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1589.  
  1590.     dc.w    $106,$1000
  1591.  
  1592.     dc.w    $080,0,$082,0
  1593. cprbuf.e
  1594.  
  1595.     dc.w    $088,$0000        ;copjmp2
  1596.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1597. cprbck
  1598. sprdat
  1599.     dc.w    $ffff,$fffe
  1600.  
  1601. palette        ds.l    256        ;palette 24-bits, far out !
  1602. paltab        ds.w    256        ;palette cycle-tabel
  1603.  
  1604.     cnop    0,2
  1605. var    ds.b    $300    ;variabelen voor routines
  1606.  
  1607.     
  1608. ;    SECTION    10,CODE_C
  1609.         endc
  1610.  
  1611. ; this is the routine-source
  1612. ;**********************************************************************
  1613.  
  1614. ;    Input:
  1615. ;    a0=variabelen tabel
  1616. ;    d0=routinfo
  1617.  
  1618. ;    Output:
  1619. ;    a0=picture
  1620. ;    d1=copperlist
  1621.  
  1622.     SECTION    3,CODE
  1623.     cnop    0,8
  1624. rot
  1625. rotp
  1626.     ifd    ocs
  1627.     dc.l    'ROTO'
  1628.     endc
  1629.     ifnd    ocs
  1630.     dc.l    'ROTA'
  1631.     endc
  1632.     movem.l    d2-d7/a1-a6,-(sp)
  1633.  
  1634.     lea    ($dff000).l,a6    ;hardware
  1635.     lea    rot,a5        ;prog base
  1636.     ifd    rout
  1637.     move.l    #rotc,a2
  1638.     endc
  1639.     move.l    a2,rotchp-rot(a5)
  1640.     
  1641.     move.l    var_rottrg(a0),a2    ;opnieuw getriggerd ?
  1642.     tst.b    (a2)
  1643.     beq.s    rot.nonewwipe
  1644.     clr.b    (a2)
  1645.     move.b    #1,rottrgrot-rot(a5)
  1646.     move.l    d0,rotmod-rot(a5)
  1647.     clr.l    rotmrppos-rot(a5)
  1648. rot.nonewwipe
  1649.     
  1650. ;    move.l    d0,d1
  1651. ;    divs    #256,d1
  1652. ;    and.l    #$ffff,d1
  1653. ;;    move.l    d1,rotshp2-rot(a5)    ;sinusshape pic 2
  1654. ;    muls    #256,d1
  1655. ;    sub.l    d1,d0
  1656.  
  1657. ;    move.l    d0,d1
  1658. ;    divs    #16,d1
  1659. ;    and.l    #$ffff,d1
  1660. ;    move.l    d1,rotshp2-rot(a5)    ;sinusshape pic 2
  1661. ;    muls    #16,d1
  1662. ;    sub.l    d1,d0
  1663.  
  1664. ;    move.l    d0,rotshp1-rot(a5)    ;sinusshape pic 1
  1665.  
  1666.     bsr    rotfil
  1667.  
  1668.     move.l    var_cprbck(a0),a2
  1669.     move.l    a2,d1
  1670.     sub.l    #8,d1
  1671.  
  1672.     move.l    rotchp-rot(a5),a1
  1673.     add.l    #rotcop.1-rotc,a1        ;copperjump adres zetten
  1674.     add.l    rotbuf-rot(a5),a1
  1675.     move.w    d1,6(a1)
  1676.     swap    d1
  1677.     move.w    d1,2(a1)
  1678.  
  1679.     bsr    rotset
  1680.  
  1681.     sub.l    a0,a0            ;geen pic
  1682.     ifd    rout
  1683.     move.l    #rotincpic,a0        ;incbinfile !!!
  1684.     endc
  1685.     
  1686.     move.l    rotchp-rot(a5),a1
  1687.     add.l    #rotcop.1-rotc,a1        ;copperlist
  1688.     add.l    rotbuf-rot(a5),a1
  1689.     eor.l    #rotcop.2-rotcop.1,rotbuf-rot(a5)
  1690.     move.l    a1,d1
  1691.     movem.l    (sp)+,d2-d7/a1-a6
  1692.     rts
  1693.  
  1694. rotfil
  1695.     movem.l    d0-d7/a0-a6,-(sp)
  1696.     move.l    rotchp-rot(a5),a0
  1697.     add.l    #rotcop.1-rotc,a0
  1698.     tst.w    2(a0)            ;leeg ?
  1699.     bne    rotfil.end
  1700.     move.w    #win_str,d1
  1701.     move.w    #vew_hgt-4-1,d0
  1702. rotfil.a    
  1703.     move.b    d1,8(a0)
  1704.     add.l    #1,d1
  1705.     add.l    #rotcop.t,a0
  1706.     dbra    d0,rotfil.a    
  1707.  
  1708.     move.l    rotchp-rot(a5),a0
  1709.     add.l    #rotcop.1-rotc,a0
  1710.     move.l    a0,a1
  1711.     add.l    #rotcop.2-rotcop.1,a1
  1712.     move.w    #rotcop_l/2-1,d0    
  1713. rotfil.c
  1714.     move.w    (a0)+,(a1)+
  1715.     dbra    d0,rotfil.c
  1716.     
  1717. rotfil.end
  1718.     movem.l    (sp)+,d0-d7/a0-a6
  1719.     rts
  1720.  
  1721. rotcopclr
  1722.     movem.l    d0-d7/a0-a6,-(sp)
  1723.  
  1724.     lea    (9*32+rotcopscr),a0
  1725.     moveq.l    #0,d0
  1726.     moveq.l    #0,d1
  1727.     moveq.l    #0,d2
  1728.     moveq.l    #0,d3
  1729.     moveq.l    #0,d4
  1730.     moveq.l    #0,d5
  1731.     moveq.l    #0,d6
  1732.     moveq.l    #0,d7
  1733.     movem.l    d0-d7,-(a0)
  1734.     movem.l    d0-d7,-(a0)
  1735.     movem.l    d0-d7,-(a0)
  1736.     movem.l    d0-d7,-(a0)
  1737.     movem.l    d0-d7,-(a0)
  1738.     movem.l    d0-d7,-(a0)
  1739.     movem.l    d0-d7,-(a0)
  1740.     movem.l    d0-d7,-(a0)
  1741.     movem.l    d0-d7,-(a0)
  1742.     
  1743. rotcopclr.end
  1744.     movem.l    (sp)+,d0-d7/a0-a6
  1745.     rts
  1746.  
  1747. rotcopfil
  1748.     movem.l    d0-d7/a0-a6,-(sp)
  1749.  
  1750.     lea    rotcopscr+vew_hgt-4,a1
  1751.     move.l    #vew_hgt-4-1,d0
  1752. rotcopfil.e
  1753.     tst.b    -(a1)
  1754.     bne    rotcopfil.f
  1755.     dbra    d0,rotcopfil.e
  1756.     moveq.l    #0,d0
  1757. rotcopfil.f
  1758.     muls    #rotcop.t,d0
  1759.     move.l    a3,a4
  1760.     add.l    d0,a4
  1761.     move.l    a3,a2
  1762.     add.l    #rotcop.t*(vew_hgt-4),a2
  1763.         
  1764.     lea    rotcopemp,a0
  1765.     move.l    a0,d0
  1766.     move.l    a0,d1
  1767.     move.l    a0,d2
  1768.     move.l    a0,d3
  1769.     move.l    a0,d4
  1770.     move.l    a0,d5
  1771.     move.l    a0,d6
  1772.     move.l    a0,d7
  1773.  
  1774.     lea    rotcopscr,a1
  1775.  
  1776. rotcopfil.a    
  1777.     cmp.l    a3,a4
  1778.     beq    rotcopfil.h
  1779.  
  1780.     tst.b    (a1)+
  1781.     beq.s    rotcopfil.c
  1782.  
  1783.     move.l    d0,a0
  1784.     
  1785.     move.w    18(a3),d0    ;0
  1786.     swap    d0
  1787.     move.w    22(a3),d0
  1788.  
  1789.     cmp.l    d0,a0
  1790.     beq    rotcopfil.d
  1791.  
  1792.     move.w    26(a3),d1    ;1
  1793.     swap    d1
  1794.     move.w    30(a3),d1
  1795.  
  1796.     move.w    34(a3),d2    ;2
  1797.     swap    d2
  1798.     move.w    38(a3),d2
  1799.  
  1800.     move.w    42(a3),d3    ;3
  1801.     swap    d3
  1802.     move.w    46(a3),d3
  1803.  
  1804.     move.w    50(a3),d4    ;4
  1805.     swap    d4
  1806.     move.w    54(a3),d4
  1807.  
  1808.     move.w    58(a3),d5    ;5
  1809.     swap    d5
  1810.     move.w    62(a3),d5
  1811.  
  1812.     move.w    66(a3),d6    ;6
  1813.     swap    d6
  1814.     move.w    70(a3),d6
  1815.  
  1816.     move.w    74(a3),d7    ;7
  1817.     swap    d7
  1818.     move.w    78(a3),d7
  1819.  
  1820.     bra.s    rotcopfil.d    
  1821. rotcopfil.c
  1822.  
  1823.     move.l    d0,a0
  1824.     
  1825.     move.w    18(a3),d0    ;0
  1826.     swap    d0
  1827.     move.w    22(a3),d0    
  1828.  
  1829.     cmp.l    d0,a0
  1830.     beq.s    rotcopfil.d
  1831.     move.l    a0,d0
  1832.  
  1833.     move.w    d0,22(a3)    
  1834.     swap    d0
  1835.     move.w    d0,18(a3)    ;0
  1836.     swap    d0
  1837.  
  1838.     move.w    d1,30(a3)
  1839.     swap    d1
  1840.     move.w    d1,26(a3)    ;1
  1841.     swap    d1
  1842.  
  1843.     move.w    d2,38(a3)
  1844.     swap    d2
  1845.     move.w    d2,34(a3)    ;2
  1846.     swap    d2
  1847.  
  1848.     move.w    d3,46(a3)
  1849.     swap    d3
  1850.     move.w    d3,42(a3)    ;3
  1851.     swap    d3
  1852.  
  1853.     move.w    d4,54(a3)
  1854.     swap    d4
  1855.     move.w    d4,50(a3)    ;4
  1856.     swap    d4
  1857.  
  1858.     move.w    d5,62(a3)
  1859.     swap    d5
  1860.     move.w    d5,58(a3)    ;5
  1861.     swap    d5
  1862.  
  1863.     move.w    d6,70(a3)
  1864.     swap    d6
  1865.     move.w    d6,66(a3)    ;6
  1866.     swap    d6
  1867.  
  1868.     move.w    d7,78(a3)
  1869.     swap    d7
  1870.     move.w    d7,74(a3)    ;7
  1871.     swap    d7
  1872. rotcopfil.d
  1873.     add.l    #rotcop.t,a3
  1874.     bra    rotcopfil.a    
  1875.  
  1876. rotcopfil.h
  1877.     lea    rotcopemp,a0
  1878.     move.l    a0,d0
  1879.     move.l    d0,d1
  1880.     swap    d1
  1881. rotcopfil.g
  1882.     cmp.l    a3,a2
  1883.     beq.s    rotcopfil.end
  1884.  
  1885.     cmp.w    22(a3),d0
  1886.     bne.s    rotcopfil.n    
  1887.     cmp.w    18(a3),d1    ;0
  1888.     beq.s    rotcopfil.m    
  1889. rotcopfil.n
  1890.     move.w    d0,22(a3)    
  1891.     move.w    d1,18(a3)    ;0
  1892.     move.w    d0,30(a3)
  1893.     move.w    d1,26(a3)    ;1
  1894.     move.w    d0,38(a3)
  1895.     move.w    d1,34(a3)    ;2
  1896.     move.w    d0,46(a3)
  1897.     move.w    d1,42(a3)    ;3
  1898.     move.w    d0,54(a3)
  1899.     move.w    d1,50(a3)    ;4
  1900.     move.w    d0,62(a3)
  1901.     move.w    d1,58(a3)    ;5
  1902.     move.w    d0,70(a3)
  1903.     move.w    d1,66(a3)    ;6
  1904.     move.w    d0,78(a3)
  1905.     move.w    d1,74(a3)    ;7
  1906. rotcopfil.m    
  1907.     add.l    #rotcop.t,a3
  1908.     bra    rotcopfil.g
  1909. rotcopfil.end
  1910.     movem.l    (sp)+,d0-d7/a0-a6
  1911.     rts
  1912.  
  1913.     ;a1    picture
  1914.     ;d1    rawplanes
  1915.     ;a2    sinusinfo
  1916.     
  1917. rotget
  1918.     movem.l    d3-d7/a0-a6,-(sp)
  1919.  
  1920.     lea    rotsintab,a3
  1921.     
  1922.     move.l    (a2),d0            ;get current x-pos
  1923.     clr.l    d3
  1924.     move.w    (a3,d0),d3        ;get sinus value
  1925.  
  1926.     clr.l    d4
  1927.     move.w    pic_wid(a1),d4        ;pic width in bytes
  1928.     lsl.l    #3,d4            ;*8
  1929.  
  1930.     move.l    #vew_wid*8,d7
  1931.     btst    #15-8,pic_vew(a1)
  1932.     beq    rotget.bc
  1933.     move.l    #vew_wid*8*2,d7
  1934. rotget.bc
  1935.     sub.l    d7,d4            ;-vewwidth
  1936.  
  1937.     cmp.w    #0,d4            ;<0 ?
  1938.     bge    rotget.ba
  1939.     clr.l    d4
  1940.     bra    rotget.endx
  1941. rotget.ba
  1942.     muls    d4,d3
  1943.  
  1944.     ifd    ocs
  1945.     lsr.l    #8,d3            ;/1024
  1946.     lsr.l    #2,d3
  1947.     divs    #16,d3
  1948.     swap    d3
  1949.     move.w    #$f,d4
  1950.     sub.w    d3,d4
  1951.     or.w    d4,d2            ;bitshift $102
  1952.     endc
  1953.     
  1954.     ifnd    ocs
  1955.     lsr.l    #8,d3            ;/256
  1956.     lsr.l    #2,d3
  1957.     divs    #64,d3
  1958.     swap    d3
  1959.     move.w    #64-1,d4
  1960.     sub.w    d3,d4
  1961.  
  1962.     bfexts    d4{26:2},d6
  1963.     bfins    d6,d2{20:2}
  1964.     bfexts    d4{28:4},d6
  1965.     bfins    d6,d2{28:4}
  1966.     endc
  1967.     
  1968.     clr.w    d3
  1969.     swap    d3
  1970.  
  1971.     ifd    ocs
  1972.     lsl.l    #1,d3            ;*2
  1973.     endc
  1974.     ifnd    ocs
  1975.     lsl.l    #3,d3            ;*8
  1976.     endc
  1977.  
  1978.     add.l    d3,d1            ;raw+x
  1979.  
  1980. rotget.endx
  1981.     add.l    8(a2),d0        ;+ sinusadd
  1982.     cmp.l    #rotsintab.e-rotsintab,d0
  1983.     blt    rotget.bb
  1984.     sub.l    #rotsintab.e-rotsintab,d0
  1985. rotget.bb
  1986.     move.l    d0,(a2)            ;return position
  1987.     
  1988.     move.l    4(a2),d0        ;get current y-pos
  1989.     clr.l    d3
  1990.     move.w    (a3,d0),d3        ;get sinus value
  1991.  
  1992.     clr.l    d4
  1993.     move.w    pic_hgt(a1),d4        ;pic heigth
  1994.  
  1995.     move.l    #vew_hgt,d7
  1996.     cmp.b    #50,var_ntsc(a0)    ;ntsc check
  1997.     beq    rotget.pal
  1998.     sub.l    #56,d7
  1999. rotget.pal
  2000.  
  2001.     btst    #2,pic_vew(a1)
  2002.     beq    rotget.cc
  2003.     add.l    d7,d7
  2004. rotget.cc
  2005.     sub.l    d7,d4            ;-vewheigth
  2006.  
  2007.     cmp.w    #0,d4            ;<0 ?
  2008.     bge    rotget.ca
  2009.     clr.l    d4
  2010. rotget.ca
  2011.     muls    d4,d3
  2012.     lsr.l    #8,d3            ;/1024
  2013.     lsr.l    #2,d3
  2014.     
  2015.     clr.l    d4
  2016.     move.w    pic_wid(a1),d4        ;*width
  2017.     muls    pic_dpt(a1),d4        ;*depth
  2018.     muls    d4,d3
  2019.     
  2020.     add.l    d3,d1            ;raw+y
  2021.     add.l    12(a2),d0        ;+ sinusadd
  2022.     cmp.l    #rotsintab.e-rotsintab,d0
  2023.     blt    rotget.c
  2024.     sub.l    #rotsintab.e-rotsintab,d0
  2025. rotget.c
  2026.     move.l    d0,4(a2)        ;return position
  2027.  
  2028.     movem.l    (sp)+,d3-d7/a0-a6
  2029.     rts
  2030.     
  2031. rotset
  2032.     movem.l    d0-d7/a0-a6,-(sp)
  2033.  
  2034.     tst.l    var_pic1(a0)        ;is there a picture ?
  2035.     beq    rotset.end
  2036.  
  2037.     clr.l    d2            ;$102 bitshift
  2038.  
  2039.     move.l    var_pic1(a0),a1        ;get picture
  2040.     cmp.l    #'PICT',(a1)
  2041.     bne    rotset.end        ;nog aanwezig ?
  2042.     
  2043.     lea    pic_raw(a1),a3        ;start picture planes
  2044.     move.l    a3,d1
  2045.     move.l    d1,d5            ;plane1 naar plane2 copieren
  2046.  
  2047.     clr.l    d3
  2048.     move.w    pic_wid(a1),d3        ;skip voor plane1
  2049.     
  2050. ;    move.l    rotshp1-rot(a5),d0    ;shape number
  2051. ;    muls    #4*4,d0
  2052.     clr.l    d0
  2053.  
  2054.     lea    rotshptab,a2        ;sinus shape table
  2055.     lea    (a2,d0),a2
  2056.     bsr    rotget            ;a1,a2,d1=d2,d1
  2057.     exg.l    d1,d5            ;store pic1, get frsh pic1
  2058.     ror.l    #4,d2            ;store bitshift
  2059.  
  2060. ;    move.l    rotshp2-rot(a5),d0    ;shape number
  2061. ;    muls    #4*4,d0
  2062.     clr.l    d0
  2063.  
  2064.     lea    4*4*16+rotshptab,a2    ;sinus shape table
  2065.     lea    (a2,d0),a2
  2066.  
  2067.     tst.l    var_pic2(a0)        ;is there double playfield ?
  2068.     beq    rotset.nodpl
  2069.     move.l    var_pic2(a0),a4        ;pic halen
  2070.     cmp.l    #'PICT',(a4)
  2071.     bne    rotset.nodpl        ;nog aanwezig ?
  2072.     cmp.l    a1,a4            ;hetzelfde ?
  2073.     bne    rotset.dpl
  2074. rotset.nodpl
  2075.     add.l    d3,d1            ;get plane2 from pic1
  2076.     lsl.l    #1,d3            ;*2 double skip
  2077.     move.l    d3,d4            ;planeskip copieren
  2078.     bsr    rotget            ;a1,a2,d1=d2,d1
  2079.     bra    rotset.pln
  2080. rotset.dpl
  2081.     move.l    var_pic2(a0),a1        ;pic halen
  2082.  
  2083.     lea    pic_raw(a1),a3
  2084.     move.l    a3,d1            ;raw planes halen
  2085.     clr.l    d4            ;skip halen
  2086.     move.w    pic_wid(a1),d4
  2087.     bsr    rotget            ;a1,a2,d1=d2,d1
  2088.     
  2089. rotset.pln
  2090.     rol.l    #4,d2            ;get complete bitshift
  2091.     move.l    rotchp-rot(a5),a3
  2092.     add.l    #rotcop.1-rotc,a3
  2093.     add.l    rotbuf-rot(a5),a3
  2094.     move.w    d2,14(a3)
  2095.  
  2096.     move.l    rotmod-rot(a5),d0    ;routinemode
  2097.  
  2098.     lea    rotwiptab,a4
  2099.     muls    #rotwiptab.t,d0
  2100.     add.l    d0,a4
  2101.     
  2102.     move.l    (a4),a2
  2103.     add.l    a5,a2
  2104.     jsr    (a2)
  2105.     
  2106. rotset.end
  2107.     movem.l    (sp)+,d0-d7/a0-a6
  2108.     rts
  2109.     
  2110. rotvew
  2111.     movem.l    d0-d7/a0-a6,-(sp)
  2112.  
  2113.     clr.l    d7
  2114.     move.w    pic_dpt(a1),d7        ;depth
  2115.     clr.l    d6
  2116.     move.w    pic_hgt(a1),d6        ;hoogte
  2117.     clr.l    d2
  2118.     move.w    pic_wid(a1),d2        ;breedte
  2119.     
  2120.     cmp.w    #vew_hgt,d6        ;high centring
  2121.     bge    rotvew.d
  2122.     move.w    #vew_hgt,d0
  2123.     sub.w    d6,d0
  2124.     lsr.l    #1,d0
  2125.     muls    d2,d0            ;width
  2126.     muls    d7,d0            ;depth
  2127.     sub.l    d0,d5
  2128.     sub.l    d0,d1
  2129. rotvew.d
  2130.  
  2131.     lsr.l    #1,d7
  2132.     move.w    #vew_hgt-4-1,d2
  2133. rotvew.c
  2134.     move.w    d7,d0            ;depth
  2135.     sub.w    #1,d0
  2136. rotvew.a    
  2137.     move.w    d5,22(a3)
  2138.     swap    d5
  2139.     move.w    d5,18(a3)
  2140.     swap    d5
  2141.  
  2142.     move.w    d1,30(a3)
  2143.     swap    d1
  2144.     move.w    d1,26(a3)
  2145.     swap    d1
  2146.  
  2147.     add.l    #16,a3
  2148.     add.l    d3,d5
  2149.     add.l    d4,d1
  2150.     
  2151.     dbra    d0,rotvew.a    
  2152.  
  2153.     move.l    #rotcop.t,d0
  2154.     move.l    d7,d6
  2155.     lsl.l    #4,d6
  2156.     sub.l    d6,d0
  2157.     add.l    d0,a3
  2158.  
  2159.     dbra    d2,rotvew.c    
  2160. rotvew.end
  2161.     movem.l    (sp)+,d0-d7/a0-a6
  2162.     rts
  2163.  
  2164. rotmrp
  2165.     movem.l    d0-d7/a0-a6,-(sp)
  2166.  
  2167.     bsr    rotcopclr
  2168.     
  2169.     tst.b    rottrgrot-rot(a5)
  2170.     beq.s    rotmrp.nonewwipe
  2171.     clr.b    rottrgrot-rot(a5)
  2172.  
  2173.     move.l    4(a4),a2        ;morph start
  2174.     add.l    a5,a2
  2175.     move.l    8(a4),a1        ;morph end
  2176.     add.l    a5,a1
  2177.  
  2178.     lea    rotmrp.add,a6
  2179.     move.w    #vew_hgt-4-1,d2
  2180. rotmrp.e
  2181.     move.l    (a2)+,d0
  2182.     move.l    (a1)+,d6
  2183.     lsl.l    #7,d0
  2184.     lsl.l    #7,d6
  2185.     sub.l    d0,d6
  2186.     move.l    d6,(a6)+
  2187.     dbra    d2,rotmrp.e
  2188.     clr.l    rotmrppos-rot(a5)
  2189. rotmrp.nonewwipe
  2190.     move.l    4(a4),a2        ;morph start
  2191.     add.l    a5,a2
  2192.  
  2193.     lea    rotmrp.wrk,a0
  2194.     lea    rotmrp.add,a6
  2195.     move.l    rotmrppos-rot(a5),d0
  2196.     move.w    #vew_hgt-4-1,d2
  2197. rotmrp.f
  2198.     move.l    (a6)+,d7
  2199.     muls.l    d0,d7
  2200.     divs.l    #64*vew_hgt,d7        ;/18560
  2201.     move.l    (a2)+,d6
  2202.     add.l    d7,d6
  2203.     move.l    d6,(a0)+
  2204.     dbra    d2,rotmrp.f
  2205.     
  2206.     add.l    #1,d0
  2207.     cmp.l    #(vew_hgt/2)+1,d0
  2208.     beq.s    rotmrp.g
  2209.     move.l    d0,rotmrppos-rot(a5)
  2210. rotmrp.g
  2211.     movem.l    (sp),d0-d7/a0-a6
  2212.  
  2213.     lea    rotmrp.wrk,a2
  2214.  
  2215.     clr.l    d6
  2216.     move.w    pic_hgt(a1),d6        ;hoogte
  2217.     cmp.w    #vew_hgt-2,d6        ;high centring
  2218.     bge.s    rotmrp.d
  2219.     move.w    #vew_hgt-2,d0
  2220.     sub.w    d6,d0
  2221.     lsr.w    #1,d0
  2222.     move.l    d0,d6
  2223.     lsl.w    #2,d6
  2224.     add.l    d6,a2            ;morph table
  2225. rotmrp.d
  2226.     move.l    a3,a0
  2227.     
  2228.     lea    rotcopscr,a4
  2229.  
  2230.     moveq.l    #0,d7
  2231.     move.w    pic_dpt(a1),d7        ;depth
  2232.     lsr.l    #1,d7
  2233.     move.w    pic_hgt(a1),d2        ;hoogte
  2234.     sub.w    #1,d2
  2235. rotmrp.c
  2236.     move.l    (a2)+,d0
  2237.     cmp.w    #0,d0
  2238.     blt.s    rotmrp.h
  2239.     cmp.w    #vew_hgt-4,d0
  2240.     bge.s    rotmrp.h
  2241.  
  2242.     st    (a4,d0)            ;fill copperscreen
  2243.     
  2244.     move.w    d0,d6            ;muls    #rotcop.t,d0    ;* $48
  2245.     lsl.w    #6,d6            ;*64
  2246.     lsl.w    #3,d0            ;*8
  2247.     add.w    d6,d0
  2248.         
  2249.     add.l    d0,a3
  2250.  
  2251.     move.w    d7,d0            ;depth
  2252.     sub.b    #1,d0
  2253. rotmrp.a    
  2254.     move.w    d5,22(a3)
  2255.     swap    d5
  2256.     move.w    d5,18(a3)
  2257.     swap    d5
  2258.  
  2259.     move.w    d1,30(a3)
  2260.     swap    d1
  2261.     move.w    d1,26(a3)
  2262.     swap    d1
  2263.  
  2264.     lea    16(a3),a3
  2265.     add.l    d3,d5
  2266.     add.l    d4,d1
  2267.     
  2268.     dbra    d0,rotmrp.a    
  2269.  
  2270.     move.l    a0,a3
  2271.     bra.s    rotmrp.i
  2272. rotmrp.h
  2273.     move.w    d7,d0            ;depth
  2274.     sub.b    #1,d0
  2275. rotmrp.j
  2276.     add.l    d3,d5
  2277.     add.l    d4,d1
  2278.     dbra    d0,rotmrp.j    
  2279. rotmrp.i
  2280.     dbra    d2,rotmrp.c    
  2281.  
  2282.     bsr    rotcopfil
  2283.  
  2284. rotmrp.end
  2285.     movem.l    (sp)+,d0-d7/a0-a6
  2286.     rts
  2287.  
  2288. rotsin
  2289.     movem.l    d0-d7/a0-a6,-(sp)
  2290.  
  2291.     bsr    rotcopclr
  2292.     
  2293.     tst.b    rottrgrot-rot(a5)
  2294.     beq.s    rotsin.nonewwipe
  2295.     clr.b    rottrgrot-rot(a5)
  2296.  
  2297. rotsin.nonewwipe
  2298.     lea    rotsintab,a6
  2299.  
  2300.     move.l    4(a4),d0        ;sinus position
  2301.     move.l    8(a4),d1        ;sinus speed
  2302.     add.l    d1,d0
  2303.     cmp.l    #0,d0
  2304.     bge    rotsin.k1
  2305.     add.l    #360*4,d0
  2306. rotsin.k1
  2307.     cmp.l    #360*4,d0
  2308.     blt    rotsin.k2
  2309.     sub.l    #360*4,d0
  2310. rotsin.k2
  2311.     move.l    d0,4(a4)
  2312.  
  2313.     move.l    12(a4),d2        ;size position
  2314.     move.l    16(a4),d3        ;size speed
  2315.     add.l    d3,d2
  2316.     cmp.l    #0,d2
  2317.     bge    rotsin.l1
  2318.     add.l    #360*4,d2
  2319. rotsin.l1
  2320.     cmp.l    #360*4,d2
  2321.     blt    rotsin.l2
  2322.     sub.l    #360*4,d2
  2323. rotsin.l2
  2324.     move.l    d2,12(a4)
  2325.  
  2326.     move.w    (a6,d2),d6        ;get sinus value
  2327.     ext.l    d6
  2328.     divs    #65536/((vew_hgt-4)),d6
  2329.     add.w    #((vew_hgt-4))/2,d6
  2330.     ext.l    d6
  2331.     move.l    #65536+32768,d2
  2332.     tst.w    d6
  2333.     bne    rotsin.l3
  2334.     move.w    #1,d6
  2335. rotsin.l3
  2336.     divs.l    d6,d2            ;680++ !
  2337.     tst.w    d2
  2338.     bne    rotsin.l4
  2339.     move.w    #1,d2
  2340. rotsin.l4
  2341.         
  2342.     move.l    20(a4),d4        ;centre position
  2343.     move.l    24(a4),d5        ;centre speed
  2344.     add.l    d5,d4
  2345.     cmp.l    #0,d4
  2346.     bge    rotsin.m1
  2347.     add.l    #360*4,d4
  2348. rotsin.m1
  2349.     cmp.l    #360*4,d4
  2350.     blt    rotsin.m2
  2351.     sub.l    #360*4,d4
  2352. rotsin.m2
  2353.     move.l    d4,20(a4)
  2354.  
  2355.     move.w    (a6,d4),d4        ;get sinus value
  2356.     ext.l    d4
  2357.     divs    #65536/((vew_hgt-4)/4),d4
  2358.     add.w    #(vew_hgt-4)/2,d4
  2359.         
  2360.     lea    rotsin.wrk,a0
  2361.     move.w    #vew_hgt-4-1,d7
  2362. rotsin.f
  2363.  
  2364.     move.w    (a6,d0),d6        ;get sinus value
  2365.     ext.l    d6
  2366.     divs    d2,d6
  2367.     add.w    d4,d6
  2368.  
  2369.     move.w    d6,2(a0)
  2370.     lea    4(a0),a0
  2371.  
  2372.     add.l    #2,d0
  2373.     cmp.w    #360*4,d0
  2374.     bne    rotsin.f2
  2375.     moveq.l    #0,d0
  2376. rotsin.f2
  2377.     dbra    d7,rotsin.f
  2378.     
  2379.     movem.l    (sp),d0-d7/a0-a6
  2380.  
  2381.     lea    rotsin.wrk,a2
  2382.  
  2383.     clr.l    d6
  2384.     move.w    pic_hgt(a1),d6        ;hoogte
  2385.     cmp.w    #vew_hgt-2,d6        ;high centring
  2386.     bge.s    rotsin.d
  2387.     move.w    #vew_hgt-2,d0
  2388.     sub.w    d6,d0
  2389.     lsr.w    #1,d0
  2390.     move.l    d0,d6
  2391.     lsl.w    #2,d6
  2392.     add.l    d6,a2            ;morph table
  2393. rotsin.d
  2394.     move.l    a3,a0
  2395.     
  2396.     lea    rotcopscr,a4
  2397.  
  2398.     moveq.l    #0,d7
  2399.     move.w    pic_dpt(a1),d7        ;depth
  2400.     lsr.l    #1,d7
  2401.     move.w    pic_hgt(a1),d2        ;hoogte
  2402.     sub.w    #1,d2
  2403. rotsin.c
  2404.     move.l    (a2)+,d0
  2405.     cmp.w    #0,d0
  2406.     blt.s    rotsin.h
  2407.     cmp.w    #vew_hgt-4,d0
  2408.     bge.s    rotsin.h
  2409.  
  2410.     st    (a4,d0)            ;fill copperscreen
  2411.     
  2412.     move.w    d0,d6            ;muls    #rotcop.t,d0    ;* $48
  2413.     lsl.w    #6,d6            ;*64
  2414.     lsl.w    #3,d0            ;*8
  2415.     add.w    d6,d0
  2416.         
  2417.     add.l    d0,a3
  2418.  
  2419.     move.w    d7,d0            ;depth
  2420.     sub.b    #1,d0
  2421. rotsin.a    
  2422.     move.w    d5,22(a3)
  2423.     swap    d5
  2424.     move.w    d5,18(a3)
  2425.     swap    d5
  2426.  
  2427.     move.w    d1,30(a3)
  2428.     swap    d1
  2429.     move.w    d1,26(a3)
  2430.     swap    d1
  2431.  
  2432.     lea    16(a3),a3
  2433.     add.l    d3,d5
  2434.     add.l    d4,d1
  2435.     
  2436.     dbra    d0,rotsin.a    
  2437.  
  2438.     move.l    a0,a3
  2439.     bra.s    rotsin.i
  2440. rotsin.h
  2441.     move.w    d7,d0            ;depth
  2442.     sub.b    #1,d0
  2443. rotsin.j
  2444.     add.l    d3,d5
  2445.     add.l    d4,d1
  2446.     dbra    d0,rotsin.j    
  2447. rotsin.i
  2448.     dbra    d2,rotsin.c    
  2449.  
  2450.     bsr    rotcopfil
  2451.  
  2452. rotsin.end
  2453.     movem.l    (sp)+,d0-d7/a0-a6
  2454.     rts
  2455.  
  2456. rotchp        dc.l    0
  2457. rotmod        dc.l    0
  2458. rotbuf        dc.l    0
  2459. rotshp1        dc.l    0
  2460. rotshp2        dc.l    0
  2461. rottrgrot    dc.l    0
  2462. rotmrppos    dc.l    0
  2463. rotsinpos    dc.l    0
  2464.  
  2465. rotwiptab
  2466. rotwiptab.ts
  2467.     dc.l    rotvew-rot,0,0,0,0,0,0            ;normal
  2468. rotwiptab.te
  2469. rotwiptab.t    equ    rotwiptab.te-rotwiptab.ts
  2470.  dc.l    rotmrp-rot,rotmrp.1-rot,rotmrp.2-rot,0,0,0,0    ;middle > normal
  2471.  dc.l    rotmrp-rot,rotmrp.4-rot,rotmrp.2-rot,0,0,0,0    ;top > normal
  2472.  dc.l    rotmrp-rot,rotmrp.5-rot,rotmrp.2-rot,0,0,0,0    'bottom > normal
  2473.  dc.l    rotmrp-rot,rotmrp.3-rot,rotmrp.2-rot,0,0,0,0    ;mirro > normal
  2474.  
  2475.  dc.l    rotmrp-rot,rotmrp.1-rot,rotmrp.6-rot,0,0,0,0    ;middle > mixed
  2476.  dc.l    rotmrp-rot,rotmrp.6-rot,rotmrp.2-rot,0,0,0,0    ;mixed > normal
  2477.  
  2478.  dc.l    rotmrp-rot,rotmrp.7-rot,rotmrp.2-rot,0,0,0,0    ;big > normal
  2479.  
  2480.  ;    posy    spdy    poss    spds    posm    spdm
  2481.  
  2482.  dc.l    rotsin-rot,0,10,0,0,0,0                ;sinus 1
  2483.  dc.l    rotsin-rot,0,10,0,2,0,0                ;sinus 2
  2484.  dc.l    rotsin-rot,0,10,0,0,0,4                ;sinus 3
  2485.  dc.l    rotsin-rot,0,10,0,2,0,4                ;sinus 4
  2486.  dc.l    rotsin-rot,0,10,0,6,0,2                ;sinus 
  2487.  
  2488.  dc.l    rotmrp-rot,rotsin.wrk-rot,rotmrp.2-rot,0,0,0,0    ;sinus > normal
  2489.  
  2490. rotmrp.1
  2491.     dcb.l    vew_hgt-4,(vew_hgt/2)
  2492. rotmrp.2
  2493.     dc.l    0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
  2494.     dc.l    23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
  2495.     dc.l    43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62
  2496.     dc.l    63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82
  2497.     dc.l    83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101
  2498.     dc.l    102,103,104,105,106,107,108,109,110,111,112,113,114,115,116
  2499.     dc.l    117,118,119,120,121,122,123,124,125,126,127,128,129,130,131
  2500.     dc.l    132,133,134,135,136,137,138,139,140,141,142,143,144,145,146
  2501.     dc.l    147,148,149,150,151,152,153,154,155,156,157,158,159,160,161
  2502.     dc.l    162,163,164,165,166,167,168,169,170,171,172,173,174,175,176
  2503.     dc.l    177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
  2504.     dc.l    192,193,194,195,196,197,198,199,200,201,202,203,204,205,206
  2505.     dc.l    207,208,209,210,211,212,213,214,215,216,217,218,219,220,221
  2506.     dc.l    222,223,224,225,226,227,228,229,230,231,232,233,234,235,236
  2507.     dc.l    237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
  2508.     dc.l    252,253,254,255,256,257,258,259,260,261,262,263,264,265,266
  2509.     dc.l    267,268,269,270,271,272,273,274,275,276,277,278,279,280,281
  2510.     dc.l    282,283,284,285
  2511. rotmrp.3
  2512.     dc.l    285,284,283,282,281,280,279,278,277,276,275,274,273,272        
  2513.     dc.l    271,270,269,268,267,266,265,264,263,262,261,260,259,258,257        
  2514.     dc.l    256,255,254,253,252,251,250,249,248,247,246,245,244,243,242        
  2515.     dc.l    241,240,239,238,237,236,235,234,233,232,231,230,229,228,227        
  2516.     dc.l    226,225,224,223,222,221,220,219,218,217,216,215,214,213,212        
  2517.     dc.l    211,210,209,208,207,206,205,204,203,202,201,200,199,198,197        
  2518.     dc.l    196,195,194,193,192,191,190,189,188,187,186,185,184,183,182        
  2519.     dc.l    181,180,179,178,177,176,175,174,173,172,171,170,169,168,167
  2520.     dc.l    166,165,164,163,162,161,160,159,158,157,156,155,154,153,152
  2521.     dc.l    151,150,149,148,147,146,145,144,143,142,141,140,139,138,137        
  2522.     dc.l    136,135,134,133,132,131,130,129,128,127,126,125,124,123,122        
  2523.     dc.l    121,120,119,118,117,116,115,114,113,112,111,110,109,108,107        
  2524.     dc.l    106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90        
  2525.     dc.l    89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70        
  2526.     dc.l    69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50        
  2527.     dc.l    49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30        
  2528.     dc.l    29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10        
  2529.     dc.l    9,8,7,6,5,4,3,2,1,0
  2530. rotmrp.4
  2531.     ds.l    vew_hgt-4
  2532. rotmrp.5
  2533.     dcb.l    vew_hgt-4,vew_hgt-4
  2534. rotmrp.6
  2535.     dc.l    0,285,2,283,4,281,6,279,8,277,10,275,12,273,14,271,16,269
  2536.     dc.l    18,267,20,265,22,263,24,261,26,259,28,257,30,255,32,253,34
  2537.     dc.l    251,36,249,38,247,40,245,42,243,44,241,46,239,48,237,50,235
  2538.     dc.l    52,233,54,231,56,229,58,227,60,225,62,223,64,221,66,219,68
  2539.     dc.l    217,70,215,72,213,74,211,76,209,78,207,80,205,82,203,84,201
  2540.     dc.l    86,199,88,197,90,195,92,193,94,191,96,189,98,187,100,185,102
  2541.     dc.l    183,104,181,106,179,108,177,110,175,112,173,114,171,116,169
  2542.     dc.l    118,167,120,165,122,163,124,161,126,159,128,157,130,155,132
  2543.     dc.l    153,134,151,136,149,138,147,140,145,142,143,144,141,146,139
  2544.     dc.l    148,137,150,135,152,133,154,131,156,129,158,127,160,125,162
  2545.     dc.l    123,164,121,166,119,168,117,170,115,172,113,174,111,176,109
  2546.     dc.l    178,107,180,105,182,103,184,101,186,99,188,97,190,95,192,93
  2547.     dc.l    194,91,196,89,198,87,200,85,202,83,204,81,206,79,208,77,210
  2548.     dc.l    75,212,73,214,71,216,69,218,67,220,65,222,63,224,61,226,59
  2549.     dc.l    228,57,230,55,232,53,234,51,236,49,238,47,240,45,242,43,244
  2550.     dc.l    41,246,39,248,37,250,35,252,33,254,31,256,29,258,27,260,25        
  2551.     dc.l    262,23,264,21,266,19,268,17,270,15,272,13,274,11,276,9,278,7        
  2552.     dc.l    280,5,282,3,284,1
  2553. rotmrp.7
  2554.     dc.l    -142*32,-141*32,-140*32,-139*32,-138*32,-137*32
  2555.     dc.l    -136*32,-135*32,-134*32,-133*32,-132*32,-131*32,-130*32,-129*32,-128*32,-127*32,-126*32,-125*32,-124*32,-123*32,-122*32        
  2556.     dc.l    -121*32,-120*32,-119*32,-118*32,-117*32,-116*32,-115*32,-114*32,-113*32,-112*32,-111*32,-110*32,-109*32,-108*32,-107*32        
  2557.     dc.l    -106*32,-105*32,-104*32,-103*32,-102*32,-101*32,-100*32,-99*32,-98*32,-97*32,-96*32,-95*32,-94*32,-93*32,-92*32,-91*32,-90*32        
  2558.     dc.l    -89*32,-88*32,-87*32,-86*32,-85*32,-84*32,-83*32,-82*32,-81*32,-80*32,-79*32,-78*32,-77*32,-76*32,-75*32,-74*32,-73*32,-72*32,-71*32,-70*32        
  2559.     dc.l    -69*32,-68*32,-67*32,-66*32,-65*32,-64*32,-63*32,-62*32,-61*32,-60*32,-59*32,-58*32,-57*32,-56*32,-55*32,-54*32,-53*32,-52*32,-51*32,-50*32        
  2560.     dc.l    -49*32,-48*32,-47*32,-46*32,-45*32,-44*32,-43*32,-42*32,-41*32,-40*32,-39*32,-38*32,-37*32,-36*32,-35*32,-34*32,-33*32,-32*32,-31*32,-30*32        
  2561.     dc.l    -29*32,-28*32,-27*32,-26*32,-25*32,-24*32,-23*32,-22*32,-21*32,-20*32,-19*32,-18*32,-17*32,-16*32,-15*32,-14*32,-13*32,-12*32,-11*32,-10*32
  2562.     dc.l    -9*32,-8*32,-7*32,-6*32,-5*32,-4*32,-3*32,-2*32,-1*32
  2563.     dc.l    0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32,16*32,17*32,18*32,19*32,20*32,21*32,22*32
  2564.     dc.l    23*32,24*32,25*32,26*32,27*32,28*32,29*32,30*32,31*32,32*32,33*32,34*32,35*32,36*32,37*32,38*32,39*32,40*32,41*32,42*32
  2565.     dc.l    43*32,44*32,45*32,46*32,47*32,48*32,49*32,50*32,51*32,52*32,53*32,54*32,55*32,56*32,57*32,58*32,59*32,60*32,61*32,62*32
  2566.     dc.l    63*32,64*32,65*32,66*32,67*32,68*32,69*32,70*32,71*32,72*32,73*32,74*32,75*32,76*32,77*32,78*32,79*32,80*32,81*32,82*32
  2567.     dc.l    83*32,84*32,85*32,86*32,87*32,88*32,89*32,90*32,91*32,92*32,93*32,94*32,95*32,96*32,97*32,98*32,99*32,100*32,101*32
  2568.     dc.l    102*32,103*32,104*32,105*32,106*32,107*32,108*32,109*32,110*32,111*32,112*32,113*32,114*32,115*32,116*32
  2569.     dc.l    117*32,118*32,119*32,120*32,121*32,122*32,123*32,124*32,125*32,126*32,127*32,128*32,129*32,130*32,131*32
  2570.     dc.l    132*32,133*32,134*32,135*32,136*32,137*32,138*32,139*32,140*32,141*32,142*32,143*32
  2571.  
  2572. rotsin.wrk
  2573.     ds.l    vew_hgt-4
  2574. rotmrp.wrk
  2575.     ds.l    vew_hgt-4
  2576. rotmrp.add
  2577.     ds.l    vew_hgt-4
  2578.     
  2579. rotcopemp    ds.b    192
  2580.         cnop    0,4
  2581. rotcopscr    ds.b    vew_hgt
  2582.         cnop    0,4
  2583.     ;    posx    posy    spdx    spdy
  2584. rotshptab
  2585.     rept    2
  2586.     dc.l    0,    0,    0,    0    ;0 stil
  2587.     dc.l    0,    0,    2,    0    ;1 -
  2588.     dc.l    0,    0,    0,    2    ;2 |
  2589.     dc.l    0,    180*2,    2,    2    ;3 o
  2590.     dc.l    180*2,    0,    2,    4    ;4 (X)
  2591.     dc.l    0,    180*2,    4,    2    ;5 8
  2592.     dc.l    0,    180*2,    4,    6    ;6 weird
  2593.     dc.l    0,    0,    0,    0    ;7
  2594.     dc.l    0,    0,    0,    0    ;8
  2595.     dc.l    0,    0,    0,    0    ;9
  2596.     dc.l    0,    0,    0,    0    ;10
  2597.     dc.l    0,    0,    0,    0    ;11
  2598.     dc.l    0,    0,    0,    0    ;12
  2599.     dc.l    0,    0,    0,    0    ;13
  2600.     dc.l    0,    0,    0,    0    ;14
  2601.     dc.l    0,    0,    0,    0    ;15
  2602.     endr
  2603.  
  2604. rotsintab
  2605.        dc.w       0,286,572,858,1144,1429,1715,2000,2286,2571,2856,3141
  2606.        dc.w       3425,3709,3993,4277,4560,4843,5126,5408,5690,5971,6252,6533
  2607.        dc.w       6813,7092,7371,7649,7927,8204,8481,8757,9032,9306,9580,9853
  2608.        dc.w       10126,10397,10668,10938,11207,11475,11743,12009,12275,12539,12803,13066
  2609.        dc.w       13328,13588,13848,14107,14364,14621,14876,15130,15383,15635,15886,16135
  2610.        dc.w       16383,16631,16876,17121,17364,17606,17846,18085,18323,18559,18794,19028
  2611.        dc.w       19260,19491,19720,19947,20173,20398,20621,20842,21062,21280,21497,21712
  2612.        dc.w       21925,22137,22347,22555,22762,22967,23170,23371,23571,23768,23964,24158
  2613.        dc.w       24351,24541,24730,24916,25101,25284,25465,25644,25821,25996,26169,26340
  2614.        dc.w       26509,26676,26841,27004,27165,27324,27481,27635,27788,27938,28087,28233
  2615.        dc.w       28377,28519,28659,28796,28932,29065,29196,29324,29451,29575,29697,29817
  2616.        dc.w       29934,30049,30162,30273,30381,30487,30591,30692,30791,30888,30982,31074
  2617.        dc.w       31163,31250,31335,31418,31498,31575,31650,31723,31794,31862,31927,31990
  2618.        dc.w       32051,32109,32165,32218,32269,32318,32364,32407,32448,32487,32523,32556
  2619.        dc.w       32588,32616,32642,32666,32687,32706,32722,32736,32747,32756,32762,32766
  2620.        dc.w       32767,32766,32762,32756,32747,32736,32722,32706,32687,32666,32642,32616
  2621.        dc.w       32588,32556,32523,32487,32448,32407,32364,32318,32269,32218,32165,32109
  2622.        dc.w       32051,31990,31927,31862,31794,31723,31650,31575,31498,31418,31335,31250
  2623.        dc.w       31163,31074,30982,30888,30791,30692,30591,30487,30381,30273,30162,30049
  2624.        dc.w       29934,29817,29697,29575,29451,29324,29196,29065,28932,28796,28659,28519
  2625.        dc.w       28377,28233,28087,27938,27788,27635,27481,27324,27165,27004,26841,26676
  2626.        dc.w       26509,26340,26169,25996,25821,25644,25465,25284,25101,24916,24730,24541
  2627.        dc.w       24351,24158,23964,23768,23571,23371,23170,22967,22762,22555,22347,22137
  2628.        dc.w       21925,21712,21497,21280,21062,20842,20621,20398,20173,19947,19720,19491
  2629.        dc.w       19260,19028,18794,18559,18323,18085,17846,17606,17364,17121,16876,16631
  2630.        dc.w       16384,16135,15886,15635,15383,15130,14876,14621,14364,14107,13848,13588
  2631.        dc.w       13328,13066,12803,12539,12275,12009,11743,11475,11207,10938,10668,10397
  2632.        dc.w       10126,9853,9580,9306,9032,8757,8481,8204,7927,7649,7371,7092
  2633.        dc.w       6813,6533,6252,5971,5690,5408,5126,4843,4560,4277,3993,3709
  2634.        dc.w       3425,3141,2856,2571,2286,2000,1715,1429,1144,858,572,286
  2635.        dc.w       0,-285,-571,-857,-1143,-1429,-1714,-2000,-2285,-2570,-2855,-3140
  2636.        dc.w       -3425,-3709,-3993,-4276,-4560,-4843,-5125,-5408,-5689,-5971,-6252,-6532
  2637.        dc.w       -6812,-7092,-7370,-7649,-7927,-8204,-8480,-8756,-9031,-9306,-9580,-9853
  2638.        dc.w       -10125,-10397,-10667,-10937,-11206,-11475,-11742,-12009,-12274,-12539,-12803,-13065
  2639.        dc.w       -13327,-13588,-13847,-14106,-14364,-14620,-14875,-15130,-15383,-15635,-15885,-16135
  2640.        dc.w       -16383,-16630,-16876,-17120,-17363,-17605,-17846,-18085,-18323,-18559,-18794,-19027
  2641.        dc.w       -19259,-19490,-19719,-19947,-20173,-20397,-20620,-20842,-21062,-21280,-21497,-21712
  2642.        dc.w       -21925,-22137,-22347,-22555,-22761,-22966,-23169,-23371,-23570,-23768,-23964,-24158
  2643.        dc.w       -24350,-24541,-24729,-24916,-25100,-25283,-25464,-25643,-25820,-25995,-26168,-26339
  2644.        dc.w       -26509,-26676,-26841,-27004,-27165,-27323,-27480,-27635,-27787,-27938,-28086,-28233
  2645.        dc.w       -28377,-28518,-28658,-28796,-28931,-29064,-29195,-29324,-29450,-29575,-29696,-29816
  2646.        dc.w       -29934,-30049,-30162,-30272,-30381,-30486,-30590,-30691,-30790,-30887,-30981,-31073
  2647.        dc.w       -31163,-31250,-31335,-31417,-31497,-31575,-31650,-31723,-31793,-31861,-31927,-31990
  2648.        dc.w       -32050,-32109,-32164,-32218,-32269,-32317,-32363,-32407,-32448,-32486,-32522,-32556
  2649.        dc.w       -32587,-32616,-32642,-32665,-32687,-32705,-32722,-32735,-32747,-32755,-32762,-32765
  2650.        dc.w       -32767,-32765,-32762,-32755,-32747,-32735,-32722,-32705,-32687,-32665,-32642,-32616
  2651.        dc.w       -32587,-32556,-32522,-32486,-32448,-32407,-32363,-32317,-32269,-32218,-32164,-32109
  2652.        dc.w       -32050,-31990,-31927,-31861,-31793,-31723,-31650,-31575,-31497,-31417,-31335,-31250
  2653.        dc.w       -31163,-31073,-30981,-30887,-30790,-30691,-30590,-30486,-30381,-30272,-30162,-30049
  2654.        dc.w       -29934,-29816,-29696,-29575,-29450,-29324,-29195,-29064,-28931,-28796,-28658,-28518
  2655.        dc.w       -28377,-28233,-28086,-27938,-27787,-27635,-27480,-27323,-27165,-27004,-26841,-26676
  2656.        dc.w       -26509,-26339,-26168,-25995,-25820,-25643,-25464,-25283,-25100,-24916,-24729,-24541
  2657.        dc.w       -24350,-24158,-23964,-23768,-23570,-23371,-23169,-22966,-22761,-22555,-22347,-22137
  2658.        dc.w       -21925,-21712,-21497,-21280,-21062,-20842,-20620,-20397,-20173,-19947,-19719,-19490
  2659.        dc.w       -19259,-19027,-18794,-18559,-18323,-18085,-17846,-17605,-17363,-17120,-16876,-16630
  2660.        dc.w       -16383,-16135,-15885,-15635,-15383,-15130,-14875,-14620,-14364,-14106,-13847,-13588
  2661.        dc.w       -13327,-13065,-12803,-12539,-12274,-12009,-11742,-11475,-11206,-10937,-10667,-10397
  2662.        dc.w       -10125,-9853,-9580,-9306,-9031,-8756,-8480,-8204,-7927,-7649,-7370,-7092
  2663.        dc.w       -6812,-6532,-6252,-5971,-5689,-5408,-5125,-4843,-4560,-4276,-3993,-3709
  2664.        dc.w       -3425,-3140,-2855,-2570,-2285,-2000,-1714,-1429,-1143,-857,-571,-285
  2665. rotsintab.e
  2666.  
  2667.  
  2668. rotp.e
  2669.  
  2670.     SECTION    4,CODE_c
  2671.     cnop    0,8
  2672. rotc
  2673.     ifd    ocs
  2674.     dc.l    'ROTO'
  2675.     endc
  2676.     ifnd    ocs
  2677.     dc.l    'ROTA'
  2678.     endc
  2679.     rts
  2680.     cnop    0,8
  2681.  
  2682. rotcop.1
  2683.     dc.w    $0080,$0000,$0082,$0000
  2684.  
  2685. rotcop.ts
  2686.     dc.w    $00c1,$fffe
  2687.     dc.w    $0102,$0000
  2688.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  2689.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  2690.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  2691.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  2692.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  2693.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  2694.     ifnd    ocs
  2695.     dc.w    $00f8,$0000,$00fa,$0000    ;7
  2696.     dc.w    $00fc,$0000,$00fe,$0000    ;8
  2697.     endc
  2698. rotcop.te
  2699. rotcop.t    equ    rotcop.te-rotcop.ts
  2700.  
  2701.     rept    vew_hgt-5
  2702.     dc.w    $00c1,$fffe
  2703.     dc.w    $0102,$0000
  2704.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  2705.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  2706.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  2707.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  2708.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  2709.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  2710.     ifnd    ocs
  2711.     dc.w    $00f8,$0000,$00fa,$0000    ;7
  2712.     dc.w    $00fc,$0000,$00fe,$0000    ;8
  2713.     endc
  2714.     endr
  2715.     
  2716.     dc.w    $0088,$0000
  2717.     dc.w    $ffff,$fffe
  2718.  
  2719. rotcop.2
  2720.     ds.b    rotcop.2-rotcop.1
  2721.  
  2722. rotcop_l    equ    rotcop.2-rotcop.1    
  2723.  
  2724. rotc.e
  2725. rot.e
  2726.  
  2727. ;**********************************************************************
  2728.  
  2729. ;and here are the incbin-files....
  2730.  
  2731.         ifd    rout
  2732.         cnop    0,8
  2733. rotincpic
  2734.         ifd    ocs
  2735.         incbin    'w:effect/circles512_l4.pic'
  2736.         endc
  2737.         ifnd    ocs
  2738.         incbin    'w:effectaga/schoolgirls_16.bru'
  2739. ;        incbin    'w:effectaga/act_16.bru'
  2740. ;        incbin    'w:effectaga/rainbow_256.pic'
  2741.         endc
  2742.         endc
  2743.         
  2744.